嵌入式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,会连续打印,但还是不能和其他窗口进行交互。

小结:

相关内容

热门资讯

盘点几款!微信牵手跑有没有挂,... 微信牵手跑有没有挂是一款专注玩家量身打造的游戏记牌类型软件,在微信牵手跑有没有挂这款游戏中我们可以记...
重大发现!丽水都来脚本辅助,七... >>您好:丽水都来脚本辅助确实是有挂的,很多玩家在这款丽水都来脚本辅助游戏中打牌都会发现很多用户的牌...
三分钟了解!瓜瓜丰城手机辅助,... 三分钟了解!瓜瓜丰城手机辅助,新海贝之城脚本(有挂开挂辅助脚本);无需打开直接搜索打开薇:13670...
7分钟知晓!天天贵阳app修改... >>您好:边锋透视器辅助器微信确实是有挂的,很多玩家在这款边锋透视器辅助器微信游戏中打牌都会发现很多...
透视存在!wpk俱乐部是真的吗... 广东雀用的是什么智能插件官是一款专注玩家量身打造的游戏记牌类型软件,在广东雀用的是什么智能插件官这款...
一分钟了解!玉海楼茶苑脚本,随... 玉海楼茶苑脚本是一款专注玩家量身打造的游戏记牌类型软件,在玉海楼茶苑脚本这款游戏中我们可以记录下每张...
第七瞬间精通!兴动助手脚本有辅... 您好:这款兴动助手脚本有辅助游戏是可以开挂的,确实是有挂的,很多玩家在这款兴动助手脚本有辅助游戏中打...
透视脚本!雀友会广东潮汕麻雀万... 大家好,今天小编来为大家解答雀友会广东潮汕麻雀万能辅助器这个问题咨询软件客服可以免费测试直接加微信(...
总算了解!德扑之星安卓插件,开... 总算了解!德扑之星安卓插件,开心泉州小程序辅助哪里查看(有挂开挂辅助神器);无需打开直接搜索加薇13...
第3阶段熟悉!福建兄弟十三水辅... 第3阶段熟悉!福建兄弟十三水辅助器下载,雀神麻将小程序辅助软件(有挂开挂辅助安装)这是一款可以让一直...