Qt / QMainWindow、QDialog、QWidget
在 Qt 中,我們將窗口和控件統稱為部件(Widget)。
窗口是指程序的整體界面,可以包含標題欄、菜單欄、工具欄、關閉按鈕、最小化按鈕、最大化按鈕等。
控件是指按鈕、復選框、文本框、表格、進度條等這些組成程序的基本元素。一個程序可以有多個窗口,一個窗口也可以有多個控件。
QWidget 是所有用戶界面元素的基類,窗口和控件都是直接或間接繼承自 QWidget,QMainWindow、QWidget、QDialog 三個類就是用來創建窗口的,可以直接使用也可以繼承后再使用。
QMainWindow 窗口可以包含菜單欄、工具欄、狀態欄、標題欄等,是最常見的窗口形式,可以作為 GUI 程序的主窗口。
如下圖所示:
QDialog 是對話框窗口的基類。對話框主要用來執行短期任務,或與用戶進行互動,它可以是模態的也可以是非模態的。QDialog 沒有菜單欄、工具欄、狀態欄等。
如下圖所示:
如果是主窗口,就使用 QMainWindow;如果是對話框,就是用 QDialog;如果不確定,或有可能作為頂級窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。
需要注意的是,窗口和控件都繼承自 QWidget,如果不為控件指定父對象,它就會被作為窗口處理,這時 setWindowTitle() 和 setWindowIcon() 函數就會生效。
請看下面的代碼:
#include <QApplication> #include <QLabel> #include <QPushButton>int main(int argc, char *argv[]) {QApplication app(argc, argv);QLabel label("這是Label控件"); //沒有父對象label.setWindowTitle("Label控件作為頂級窗口");label.setGeometry(100, 50, 360, 160);label.setAlignment(Qt::AlignCenter);label.show();QPushButton btn; //沒有父對象btn.setWindowTitle("PushButton控件作為頂級窗口");btn.setText("這是個大大的按鈕");btn.setGeometry(480, 50, 360, 160);btn.show();return app.exec(); }運行代碼,會在距離顯示器 x=100,y=50 的位置彈出兩個窗口,
如下圖所示:
可以發現,窗口和控件沒有絕對的區別,控件也可以成為窗口,這取決于它有沒有父對象。
?
轉載于:https://blog.csdn.net/rl529014/article/details/51419126
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的Qt / QMainWindow、QDialog、QWidget的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt / Moc 和信号 - 槽解析
- 下一篇: OS / CPU是如何访问内存的?