C++ Qt Dialog对话框
2020 年 05 月 14 日 364 621 字 暂无评论

1.模态对话框

  • 所谓模态对话框就是常见的打开一个窗口后,父窗口不能操作了,只能操作该模态对话框
  • 这里涉及了一个dlg.exec()函数

部分代码实现

   //添加动作
    QAction *p1 = menu->addAction("模态对话框");

    connect(p1,&QAction::triggered,
            [=]()
            {
                dlg.exec();
                qDebug() <<"模态对话框";
            }
            );

运行结果

请输入图片描述

  • 在关掉模态对话框后,控制台才会输出“模态对话框

2.非模态对话框

  • 相对于模态对话框,非模态对话框相对简单,就是普通的开启另一个窗口
  • 可以同时操作父窗口,不会造成堵塞

部分代码实现

QAction *p2 = menu->addAction("非模态对话框");

    connect(p2,&QAction::triggered,
            [=]()
            {
                dlg.show();
                qDebug() <<"非模态对话框";
            }
            );

运行结果

请输入图片描述

  • 在开启非模态对话框时,控制台就会输出“非模态对话框
  • 注意这里模态和非模态对话框的生成对在头文件里,避免生成一次马上消失和指针型多次申请空间

3.关于对话框

  • 关于对话框,一般用于帮助文件,介绍解释说明用的,一般只有一个关闭或确认按键

部分代码实现

QAction *p3 = menu->addAction("关于对话框");

    connect(p3,&QAction::triggered,
            [=]()
            {
                QMessageBox::about(this,"about","关于Qt");
                //第一个参数为指定父对象,第二个为标题,第三个为内容
            }
            );

运行结果

请输入图片描述

4.问题对话框

  • 问题对话框,一般用于确认卸载发送等,需要用户答应的时候

部分代码实现

QAction *p4 = menu->addAction("问题对话框");

    connect(p4,&QAction::triggered,
            [=]()
            {
                int ret = QMessageBox::question(this,"question","Are you ok?");
             //带返回值参数,第一个指定父类,第二个标题,第三个内容,当然也可以修改按键内容默认yes no
                switch(ret)
                {
                    case QMessageBox::Yes:
                        qDebug() << "I am yes!";
                        break;
                    case QMessageBox::No:
                        qDebug() << "I am no!";
                        break;
                    default:
                        break;
                }
            }
            );

运行结果

请输入图片描述

  • 这里按键内容是可以修改的,且按键会产生返回值,接收相应返回值就可以进行相应操作,以下是部分返回值,具体可以按F1查看

请输入图片描述

5.文件对话框

  • 这就是常见的设置保存路径另存为时会出现

部分代码实现

QAction *p5 = menu->addAction("文件对话框");

    connect(p5,&QAction::triggered,
            [=]()
            {
                QString path = QFileDialog::getOpenFileName(
                            this,
                            "open",
                            "../",
                            "souce(*.cpp *.h);;Text(*.text);;all(*.*)"
                            );
                qDebug() << path;
            }
            );

运行结果

请输入图片描述

  • 该函数也是有返回值的,可以把文件路径以QString形式返回
  • "souce(.cpp .h);;Text(.text);;all(.*)"为筛选查找,注意中间要;;隔开
  • 第一个参数为指定父类,第二个为对话框名,第三个指定初始路径../为上一层目录,第四个为指定筛选格式,常用就前四个,后面的具体需求按F1查看

版权属于:zfh

本文链接:http://zfhblog.com/index.php/archives/51/



评论已关闭