QWidget是Qt中主流的窗口類,實現QWidget窗口彈出主要有三個步驟。
1.1實例一個窗口類對象QWidget *widget = new QWidget(NULL);
1.2調用函數函數QWidget::setWindowsModality(Qt::WindowModality windowModality)設置顯示窗口類型,其中Qt::WindowModality windowModality取值如下:
Qt::NonModal 不阻塞(非模態對話框)
Qt::WindowModal 阻塞父窗口,所有祖先窗口及其子窗口(半模態對話框)(沒特殊要求的話,一般用這個)
Qt::ApplicationModal 阻塞整個應用程序(模態對話框)
1.3調用函數QWidget::show()顯示該函數
注意,上述步驟中,類QWidget的對象可以是QWidget,也可以是QWidget的繼承類。下面將彈出一個QWigdet的關鍵代碼添出。
一、核心代碼
qtestwidget.h頭文件(繼承QWidget窗口類)
#ifndef QTESTWIDGET_H #define QTESTWIDGET_H #include <QWidget>
class QTestWidget : public QWidget { Q_OBJECT public: explicit QTestWidget(QWidget *parent = nullptr); signals: public slots: }; #endif // QTESTWIDGET_H
qtestwidget.cpp源文件(繼承QWidget窗口類)
1 #include "qtestwidget.h"
2
3 QTestWidget::QTestWidget(QWidget *parent) : QWidget(parent) 4 { 5
6 }
調用顯示該繼承窗口
1 void Widget::on_pushButton_8_clicked() 2 { 3 /*顯示繼承QWidget對象窗口*/
4 QTestWidget *testWidget = new QTestWidget(); 5 testWidget->setWindowModality(Qt::NonModal); 6 testWidget->setWindowTitle(tr("我是繼承QWidget的窗口!")); 7 testWidget->show(); 8
9 /*顯示QWidget窗口*/
10 QTestWidget *widget = new QTestWidget(); 11 widget->setWindowModality(Qt::NonModal); 12 widget->setWindowTitle(tr("我是QWidget窗口!")); 13 widget->show(); 14 }
二、結果顯示
點擊testWidget按鈕后,彈出一個QWidget窗口和一個繼承QWidget后的窗口。