Qt 繼承QWidget或者QWidget直接彈出窗口(非模態對話框)(對話框)


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后的窗口。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM