嵌入式Qt 对话框及其类型 QDialog
创始人
2024-12-18 19:36:27
0

一.对话框的概念

对话框是与用户进行简短交互的顶层窗口。

QDialog是Qt中所有对话框窗口的基类。

QDialog继承与QWidfet是一种容器类型的组件。

 QDialog的意义:

QDialog作为一种专业的交互窗口而存在。

QDialog不能作为子部部件嵌入其他容器中。

QDialog是定制了窗口式样的特殊的QWidget。

二.对话框的类型

模态对话框(QDialog::exec())

- 显示后无法与父窗口进行交互

- 是一种阻塞式的对话框调用方式

非模式对话框(QDialog::show)

- 显示后独立存在可以同时与父窗口进行交互

- 是一种非阻塞式的对话框调用方式。

三.对话框程序设计

main:

#include  #include  #include  #include  #include "Dialog.h"  int main(int argc, char *argv[]) {     QApplication a(argc, argv);     Dialog dlg;     int r = dlg.exec();      if( r == QDialog::Accepted )     {         qDebug() << "Accepted";     }     else if( r == QDialog::Rejected )     {         qDebug() << "Rejected";     }     else     {         qDebug() << r;     }          return r; } 

Dialog.c

#include "Dialog.h"  #include   Dialog::Dialog(QWidget *parent) :         QDialog(parent), ModalBtn(this), NormalBtn(this), MixedBtn(this) {     ModalBtn.setText("Modal Dialog");     ModalBtn.move(20, 20);     ModalBtn.resize(100, 30);      NormalBtn.setText("Normal Dialog");     NormalBtn.move(20, 70);     NormalBtn.resize(100, 30);      MixedBtn.setText("Mixed Dialog");     MixedBtn.move(20, 120);     MixedBtn.resize(100, 30);      connect(&ModalBtn, SIGNAL(clicked()), this, SLOT(ModalBtn_Clicked()));     connect(&NormalBtn, SIGNAL(clicked()), this, SLOT(NormalBtn_Clicked()));     connect(&MixedBtn, SIGNAL(clicked()), this, SLOT(MixedBtn_Clicked()));      resize(140, 170); }  void Dialog::ModalBtn_Clicked() {     qDebug() << "ModalBtn_Clicked() Begin";      QDialog dialog(this);      dialog.exec();  //阻塞式调用      // done(Accepted);      qDebug() << "ModalBtn_Clicked() End"; }  void Dialog::NormalBtn_Clicked() {     qDebug() << "NormalBtn_Clicked() Begin";      QDialog* dialog = new QDialog(this);      dialog->setAttribute(Qt::WA_DeleteOnClose);     dialog->show();      // done(Rejected);      qDebug() << "NormalBtn_Clicked() End"; }  void Dialog::MixedBtn_Clicked() {     qDebug() << "MixedBtn_Clicked() Begin";      QDialog* dialog = new QDialog(this);      dialog->setAttribute(Qt::WA_DeleteOnClose);     dialog->setModal(true);     dialog->show();      // done(100);      qDebug() << "MixedBtn_Clicked() End"; }  Dialog::~Dialog() {     qDebug() << "~Dialog()"; } 

Dialog.h

#ifndef DIALOG_H #define DIALOG_H  #include  #include   class Dialog : public QDialog {     Q_OBJECT protected:     QPushButton ModalBtn;     QPushButton NormalBtn;     QPushButton MixedBtn; protected slots:     void ModalBtn_Clicked();     void NormalBtn_Clicked();     void MixedBtn_Clicked(); public:     Dialog(QWidget *parent = 0);     ~Dialog(); };  #endif // DIALOG_H 

Dialog::ModalBtn_Clicked()为阻塞式调用,程序会一直卡在ModalBtn_Clicked() Begin,只有将对话框关闭,程序还会继续向下运行,ModalBtn_Clicked() End才会打印。

Dialog::NormalBtn_Clicked()为非阻塞式调用,程序会一直运行,NormalBtn_Clicked() Begin,NormalBtn_Clicked() End,会连续打印,但还是不能和其他窗口进行交互。

小结:

相关内容

热门资讯

长期以来!aapoker插件,... 长期以来!aapoker插件,aapoker插件(透视)举措教程(总是是真的挂)-哔哩哔哩aapok...
透视方针!wepoker好友局... 透视方针!wepoker好友局透视,wepoker透视脚本免费下载pc(脚本)详细教程(好像真的有挂...
透视了解!wpk辅助哪里买(透... 透视了解!wpk辅助哪里买(透视)wpk刷入池率脚本,教程窍要(有挂透明挂)-哔哩哔哩1、任何wpk...
在玩家背景下!aapoker能... 在玩家背景下!aapoker能控制牌吗,aapoker透视脚本(透视)烘培教程(总是真的是有挂)-哔...
透视办法!wepoker怎么发... 透视办法!wepoker怎么发冤家牌,wepoker免费脚本咨询(脚本)科普教程(其实真的是有挂)-...
透视透视!如何下载wpk透视版... 透视透视!如何下载wpk透视版(透视)wpk软件是真的吗,教程课程(有挂头条)-哔哩哔哩1、很好的工...
于此同时!aa poker辅助... 于此同时!aa poker辅助,aapoker怎么拿好牌(透视)阶段教程(竟然真的有挂)-哔哩哔哩1...
透视手筋!wepoker怎么买... 透视手筋!wepoker怎么买辅助,wepoker买钻石有用吗(脚本)了解教程(总是真的有挂)-哔哩...
透视推荐!wpk免费辅助(透视... 透视推荐!wpk免费辅助(透视)wpk系统是否存在透视行为,教程技法(有挂存在)-哔哩哔哩wpk系统...
据目击者称!aapoker公共... 据目击者称!aapoker公共底牌,aapoker脚本怎么用(透视)阶段教程(竟然是有挂)-哔哩哔哩...