嵌入式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免费透视脚本,微扑克教程(有挂细节)1、任何a...
透视软件!aapoker辅助器... 透视软件!aapoker辅助器怎么用,aapoker辅助工具安全吗,透明挂教程(有挂脚本)1)aap...
透视了解!aapoker插件,... 透视了解!aapoker插件,aapoker透视脚本,规律教程(有挂揭秘);1、进入到aapoker...
透视辅助!aa poker透视... 透视辅助!aa poker透视软件,aapoker ai插件,科技教程(有挂攻略)1、超多福利:超高...
透视美元局!aapoker怎么... 透视美元局!aapoker怎么拿好牌,aapoker怎么选牌,技巧教程(有挂细节);aapoker怎...
透视好牌!aapoker辅助器... 透视好牌!aapoker辅助器怎么用,aapoker怎么选牌,大神讲解(有挂工具)运aapoker辅...
透视规律!aapoker怎么拿... 透视规律!aapoker怎么拿好牌,aapoker透视脚本入口,曝光教程(有挂规律)1、aapoke...
透视计算!aapoker插件下... 透视计算!aapoker插件下载,aapoker辅助器是真的吗,安装教程(有挂工具)aapoker辅...
透视系统!aa poker辅助... 透视系统!aa poker辅助,aapoker透视脚本下载,攻略方法(有挂插件)1、aapoker透...
透视工具!aa poker透视... 透视工具!aa poker透视软件,aapoker辅助工具安全吗,微扑克教程(有挂插件);1、构建自...