日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT基础二

發布時間:2025/3/20 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT基础二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Subclassing QMainWindow

??????應用程序的主窗口是通過創建QMainWindow的派生類來完成的。QMainWindow和QDialog一樣,都是派生自QWidget。

??????closeEvent()是由QWidget提供的一個虛函數,在用戶關閉窗口時會被自動調用。

??????setCentralWidget()將某個Widget設置為主窗口的central widget, 而central widget意味著在顯示時會占據主窗口的中央位置。

??????Qt下的GUI 編程支持多種圖形格式。可以使用多種方式為應用程序提供圖像,最常見的包括:

??????1).????????將圖像存儲在文件中,運行時加載之。
??????2).????????在源碼中include XPM文件(XPM文件也是合法的C++文件)。
??????3).????????利用Qt的資源機制。

??????Qt的資源機制比之運行時加載更方便,并對所有支持的圖像格式都能良好工作。

??????為了利用Qt的資源機制,需要創建一個資源文件,并在.pro文件中對應添加一行來對資源文件進行標識。例如:

????????RESOURCES= spreadsheet.qrc

??????資源文件本身采用了簡單的XML格式。它被編譯進程序的可執行文件,因此不會被丟失。在對資源進行定位時,使用路徑前綴" :/" ,例如“ :/images/icon.png " 。資源本身可以是任何類型的文件。

3.2????????Creating Menus and Toolbars

??????Qt通過引入Action這一概念簡化了對menu和toolbar的編程。一個Action可以被添加到任意數量menu和toobar中。

??????在Qt中對menu和toolbar的編程涉及到三個步驟:

??????1).????????創建并設置Action
??????2).????????創建menu,并在其中添加Action
??????3).????????創建toolbar,并在其中添加Action
?????
??????Action的創建是通過QAction類來實現的,對每個Action,可以為其設置accelerator,parent,shortcut key, 可見性以及status tip等屬性,并可以通過調用connect()為ACtion設置被觸發要執行的操作。

??????QTableWidget的基類QAbstraceItemView提供了selectAll()這個slot。

??????QApplication類提供了aboutQt()這個slot,可以通過全局變量qApp(一個類型為QApplication *的指針)來使用之。

??????在Qt中,menu由QMenu類的實例表示。而Qmenu是要被放入QMenuBar之中的。函數QMainWindow::menuBar()返回一個類型為QMenuBar * 的指針。QMenuBar::addMenu()根據指定文本創建一個QMenu widget并將其添加進MenuBar中。QMenu::addAction() 則為Menu添加Action。

??????任意Qt Widget都可以具備相關的一系列QAction。通過調用QWidget::addAction() ,可以為Widget添加Action。這一特性可用來創建上下文菜單。

3.3????????Setting Up the Status Bar

??????QMainWindow::statusBar() 返回一個指向status bar的指針;status bar 在statusBar()第一次被調用時被創建。


3.4????????Implementing The Menu


??????QMessageBox::Defalut修飾符使得被修飾的Button成為默認Button,而QMessage::Escape修飾符則使得Esc鍵自動觸發被修飾的Button。
?????
??????QMessageBox::warning()用于彈出提示對話框。該函數屬于Qt提供的static convenicence function

static convenience function

??????QFileDialog::getOpenFileName() 可用于從用戶處獲得文件名--該函數彈出一個文件選擇對話框,要求用戶選擇一個文件,并返回文件名,或者在用戶選擇" Cancel" 時返回空字符串。該函數的第一個參數是其parent widget。對于dialog和其他widget,parent-child關系的意味是不完全相同的。一個dialog永遠是一個獨立的窗口,但是如果它擁有parent,則默認在parent之上居中顯示。
?????
??????當用戶發出關閉窗口的操作時,Qwidget::close() 這個slot會被調用,該slot向對應的widget發送close event。重新實現QWidget::closeEvent()能夠攔截這個event,以便確定是否真的要關閉窗口,防止誤操作。

??????每個QWidget都有一個windowModified屬性,在窗口文檔被修改時應該被設為True,否則被設為false。

??????QString::arg() 函數將字符串中編號最低的" %n" 用參數進行替換,并返回替換后的字符串。
?????
??????每個Action都可以擁有一個類型為QVariant的關聯數據。
?????
??????Qt中的qobject_cast< T> () 機制對于動態庫也可以正常工作。

?

3.5????????Using Dialog

??????modeless window--one that runs independently of any other windows in the application

??????對于modeless dialog ,當其被彈出時,可能處于三種情況:

??????1).????????這是該對話框第一次被激活
??????2).????????該對話框之前曾被激活,但用戶又將其關閉
??????3).????????該對話框之前曾被激活,而且仍可見

??????show() 將一個隱藏窗口變為可見,而activateWIndow()則將窗口的狀態變為active。

??????model window--pops up when invoked and blocks the application,preventing any other processing or interactions until it is closed.

??????一個dialog若是用show()來激活,則是modeless dialog;若通過exec()來激活,則是model dialog。此外,還可以調用setModel()來設置dialog的顯示模式。

??????QDialog::exec() 的返回至在dialog被確認時為true,否則為false。

??????在棧上創建 model dialog是一種良好的編程慣例,因為在使用完后就不再需要,而model dialog會在作用域結束后自動被銷毀。

??????由于多數應用程序的About box 都是高度雷同的,Qt中提供了一個方便的static convenicence function QMessage::about(),該函數和QMessageBox::warning()很相似。


3.6????????Storing Setting

??????Qt中是通過QSettings類來將應用程序的設置信息存儲到平臺相關的位置--windows下存入注冊表中,unix中存在文本文件中。

??????QSettings的構造函數包含兩個參數,分別是organization's name 和 application's name ,Qt使用這兩個參數來對應用程序的設置信息進行定位。

??????QSettings以key-value pair的形式存儲信息。

3.7????????Multiple Documents

??????要想實現多文檔程序,首先必須要通過new在堆上創建主窗口,而不是在棧上創建主窗口。

??????QAplication::closeAllWindows() 這個slot完成的操作是關閉應用程序所有的窗口,除非其中某個窗口拒絕了close event。程序員不需要擔心未保存的修改,因為這會由QWidget::closeEvent()負責處理。

??????通過在MainWindow的構造函數中調用setAttribute()函數來設置Qt::WA_DeleteOnClose屬性,可以要求Qt在窗口被關閉時將其自動銷毀。

??????Qt在其可用所有平臺上都支持SDI和MDI程序的創建。


3.8?????Splash Screnns

??????在Qt中為程序添加splash screen非常簡單,可通過QSplashScreen類來實現。

??????通常情況下,與splash screen相關的代碼都放在main()中,出現在調用QApplication::exec()之前。

轉載于:https://www.cnblogs.com/qq78292959/archive/2012/06/04/2534281.html

總結

以上是生活随笔為你收集整理的QT基础二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。