一 窗口部件
基礎窗口部件QWidget類是所有用戶界面對象的基類,窗口和控件都是直接或間接繼承自 QWidget,下面我們來看一個很簡單的例子:
窗口部件(Widget)簡稱部件,是QT中建立界面的主要元素,QT中把沒有嵌入到其他部件部件成為窗口,一般的窗口都有邊框,標題欄,窗口是指程序的整體界面,可以包含標題欄、菜單欄、工具欄、關閉按鈕、最小化按鈕、最大化按鈕等;控件是指按鈕、復選框、文本框、表格、進度條等這些組成程序的基本元素。一個程序可以有多個窗口,一個窗口也可以有多個控件。(但其實控件有時候就是窗口)
以上demo的代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include "dialog.h" #include <QApplication> #include <QtWidgets> int main( int argc, char *argv[]) { QApplication a(argc, argv); QWidget *widget= new QWidget(); //新建QWidget類對象,默認parent是0,所以它是個窗口。 widget->setWindowTitle(QObject::tr( "我是widget" )); QLabel *label= new QLabel(); label->setWindowTitle(QObject::tr( "我是label" )); label->setText(QObject::tr( "label:我是個窗口" )); label->resize(180,20); //指定了父窗口為widget,所以不是窗口 QLabel *label2= new QLabel(widget); label2->setText(QObject::tr( "label2:我不是獨立窗口,只是widget的子部件" )); label2->resize(250,20); label->show(); widget->show(); int ret =a.exec(); delete label; delete widget; return ret; } |
二 窗口類型
QWidget的構造函數中有兩個參數:QWidget* parent=0 和 Qt::WidowFlags f=0,前面的parent指的是父窗口部件,默認為哦,表明沒有父窗口,而后面的f參數是Qt::WindowFlags類型,是Qt::WindowType枚舉類型值或者組合。0表示Qt::Widget,默認的類型。
QMainWindow、QWidget、QDialog 三個類就是用來創(chuàng)建窗口的,可以直接使用也可以繼承后再使用。
QMainWindow 窗口可以包含菜單欄、工具欄、狀態(tài)欄、標題欄等,是最常見的窗口形式,可以作為GUI程序的主窗口。如下圖所示:
QDialog 是對話框窗口的基類。對話框主要用來執(zhí)行短期任務,或與用戶進行互動,它可以是模態(tài)的也可以是非模態(tài)的。QDialog 沒有菜單欄、工具欄、狀態(tài)欄等,如下所示:
如果是主窗口,就使用 QMainWindow;如果是對話框,就是用 QDialog;如果不確定,或有可能作為頂級窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。
需要注意的是,窗口和控件都繼承自 QWidget,如果不為控件指定父對象,它就會被作為窗口處理,這時 setWindowTitle() 和 setWindowIcon() 函數就會生效。請看下面的代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #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 的位置彈出兩個窗口,如下圖所示:
可以發(fā)現,窗口和控件沒有絕對的區(qū)別,控件也可以成為窗口,這取決于它有沒有父對象。
感謝您的閱讀,若有不足之處,歡迎指教,共同學習、共同進步。 博主網址:http://www.cnblogs.com/majianchao/ 如您喜歡,麻煩推薦一下;如您有新想法,歡迎提出,郵箱:1145356699@qq.com。 本博客為博主原創(chuàng),歡迎轉載,但必須注明博客來源。 更多關于游戲開發(fā)的內容也可關注微信公眾號:微浪游戲
一 窗口部件
基礎窗口部件QWidget類是所有用戶界面對象的基類,窗口和控件都是直接或間接繼承自 QWidget,下面我們來看一個很簡單的例子:
窗口部件(Widget)簡稱部件,是QT中建立界面的主要元素,QT中把沒有嵌入到其他部件部件成為窗口,一般的窗口都有邊框,標題欄,窗口是指程序的整體界面,可以包含標題欄、菜單欄、工具欄、關閉按鈕、最小化按鈕、最大化按鈕等;控件是指按鈕、復選框、文本框、表格、進度條等這些組成程序的基本元素。一個程序可以有多個窗口,一個窗口也可以有多個控件。(但其實控件有時候就是窗口)
以上demo的代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include "dialog.h" #include <QApplication> #include <QtWidgets> int main( int argc, char *argv[]) { QApplication a(argc, argv); QWidget *widget= new QWidget(); //新建QWidget類對象,默認parent是0,所以它是個窗口。 widget->setWindowTitle(QObject::tr( "我是widget" )); QLabel *label= new QLabel(); label->setWindowTitle(QObject::tr( "我是label" )); label->setText(QObject::tr( "label:我是個窗口" )); label->resize(180,20); //指定了父窗口為widget,所以不是窗口 QLabel *label2= new QLabel(widget); label2->setText(QObject::tr( "label2:我不是獨立窗口,只是widget的子部件" )); label2->resize(250,20); label->show(); widget->show(); int ret =a.exec(); delete label; delete widget; return ret; } |
二 窗口類型
QWidget的構造函數中有兩個參數:QWidget* parent=0 和 Qt::WidowFlags f=0,前面的parent指的是父窗口部件,默認為哦,表明沒有父窗口,而后面的f參數是Qt::WindowFlags類型,是Qt::WindowType枚舉類型值或者組合。0表示Qt::Widget,默認的類型。
QMainWindow、QWidget、QDialog 三個類就是用來創(chuàng)建窗口的,可以直接使用也可以繼承后再使用。
QMainWindow 窗口可以包含菜單欄、工具欄、狀態(tài)欄、標題欄等,是最常見的窗口形式,可以作為GUI程序的主窗口。如下圖所示:
QDialog 是對話框窗口的基類。對話框主要用來執(zhí)行短期任務,或與用戶進行互動,它可以是模態(tài)的也可以是非模態(tài)的。QDialog 沒有菜單欄、工具欄、狀態(tài)欄等,如下所示:
如果是主窗口,就使用 QMainWindow;如果是對話框,就是用 QDialog;如果不確定,或有可能作為頂級窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。
需要注意的是,窗口和控件都繼承自 QWidget,如果不為控件指定父對象,它就會被作為窗口處理,這時 setWindowTitle() 和 setWindowIcon() 函數就會生效。請看下面的代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #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 的位置彈出兩個窗口,如下圖所示:
可以發(fā)現,窗口和控件沒有絕對的區(qū)別,控件也可以成為窗口,這取決于它有沒有父對象。
感謝您的閱讀,若有不足之處,歡迎指教,共同學習、共同進步。 博主網址:http://www.cnblogs.com/majianchao/ 如您喜歡,麻煩推薦一下;如您有新想法,歡迎提出,郵箱:1145356699@qq.com。 本博客為博主原創(chuàng),歡迎轉載,但必須注明博客來源。 更多關于游戲開發(fā)的內容也可關注微信公眾號:微浪游戲
一 窗口部件
基礎窗口部件QWidget類是所有用戶界面對象的基類,窗口和控件都是直接或間接繼承自 QWidget,下面我們來看一個很簡單的例子:
窗口部件(Widget)簡稱部件,是QT中建立界面的主要元素,QT中把沒有嵌入到其他部件部件成為窗口,一般的窗口都有邊框,標題欄,窗口是指程序的整體界面,可以包含標題欄、菜單欄、工具欄、關閉按鈕、最小化按鈕、最大化按鈕等;控件是指按鈕、復選框、文本框、表格、進度條等這些組成程序的基本元素。一個程序可以有多個窗口,一個窗口也可以有多個控件。(但其實控件有時候就是窗口)
以上demo的代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include "dialog.h" #include <QApplication> #include <QtWidgets> int main( int argc, char *argv[]) { QApplication a(argc, argv); QWidget *widget= new QWidget(); //新建QWidget類對象,默認parent是0,所以它是個窗口。 widget->setWindowTitle(QObject::tr( "我是widget" )); QLabel *label= new QLabel(); label->setWindowTitle(QObject::tr( "我是label" )); label->setText(QObject::tr( "label:我是個窗口" )); label->resize(180,20); //指定了父窗口為widget,所以不是窗口 QLabel *label2= new QLabel(widget); label2->setText(QObject::tr( "label2:我不是獨立窗口,只是widget的子部件" )); label2->resize(250,20); label->show(); widget->show(); int ret =a.exec(); delete label; delete widget; return ret; } |
二 窗口類型
QWidget的構造函數中有兩個參數:QWidget* parent=0 和 Qt::WidowFlags f=0,前面的parent指的是父窗口部件,默認為哦,表明沒有父窗口,而后面的f參數是Qt::WindowFlags類型,是Qt::WindowType枚舉類型值或者組合。0表示Qt::Widget,默認的類型。
QMainWindow、QWidget、QDialog 三個類就是用來創(chuàng)建窗口的,可以直接使用也可以繼承后再使用。
QMainWindow 窗口可以包含菜單欄、工具欄、狀態(tài)欄、標題欄等,是最常見的窗口形式,可以作為GUI程序的主窗口。如下圖所示:
QDialog 是對話框窗口的基類。對話框主要用來執(zhí)行短期任務,或與用戶進行互動,它可以是模態(tài)的也可以是非模態(tài)的。QDialog 沒有菜單欄、工具欄、狀態(tài)欄等,如下所示:
如果是主窗口,就使用 QMainWindow;如果是對話框,就是用 QDialog;如果不確定,或有可能作為頂級窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。
需要注意的是,窗口和控件都繼承自 QWidget,如果不為控件指定父對象,它就會被作為窗口處理,這時 setWindowTitle() 和 setWindowIcon() 函數就會生效。請看下面的代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #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 的位置彈出兩個窗口,如下圖所示:
可以發(fā)現,窗口和控件沒有絕對的區(qū)別,控件也可以成為窗口,這取決于它有沒有父對象。
感謝您的閱讀,若有不足之處,歡迎指教,共同學習、共同進步。 博主網址:http://www.cnblogs.com/majianchao/ 如您喜歡,麻煩推薦一下;如您有新想法,歡迎提出,郵箱:1145356699@qq.com。 本博客為博主原創(chuàng),歡迎轉載,但必須注明博客來源。 更多關于游戲開發(fā)的內容也可關注微信公眾號:微浪游戲
http://www.cnblogs.com/majianchao/p/6602234.html