Qt中的对话框(模态,非模态,关于,问题,文件)
Qt中的对话框(模态,非模态,关于,问题,文件)
startstorm 发表于9个月前
Qt中的对话框(模态,非模态,关于,问题,文件)
  • 发表于 9个月前
  • 阅读 140
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 模态,非模态,关于,问题,文件对话框在MainWindow展示

项目pro中添加

CONFIG += C++11

mianwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDialog>      //对话框类

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);  
    ~MainWindow();

    QDialog dlg;

};

#endif // MAINWINDOW_H

mianwindow.cpp

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>
#include <QDebug>
#include <QMessageBox>
#include <QFileDialog> /*文件对话框*/

/*模态对话框和非模态对话框*/

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenuBar *mBar = menuBar();
    setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("对话框");
/*模态对话框*/
    QAction *p1 = menu->addAction("模态对话框");
    connect(p1,&QAction::triggered,
           [=]()
            {
                QDialog dlg;
                dlg.exec();
                qDebug() << "1111";
            }


            );
/*非模态对话框*/
    QAction *p2 = menu->addAction("非模态对话框");
    connect(p2,&QAction::triggered,
           [=]()
            {
/*第一种添加成员函数
                dlg.show();
                qDebug() << "1111";*/
/*第二种new一个新对象,没有delete或者Qt成程序结束不会释放空间
                QDialog *p = new QDialog(this);
                p->show();*/
//第三种,设置属性,一般推荐第三种
                QDialog *p = new QDialog();
                p->setAttribute(Qt::WA_DeleteOnClose);
                p->show();
            }
            );
/*关于对话框QMessagebox*/
    QAction *p3 = menu->addAction("关于对话框");
    connect(p3,&QAction::triggered,
           [=]()
            {
               QMessageBox::about(this,"about","关于Qt");
            }
            );
/*问题对话框*/
    QAction *p4 = menu->addAction("问题对话框");
    connect(p4,&QAction::triggered,
           [=]()
            {
               int ret = QMessageBox::question(this,"问题","是否保存",
                                               QMessageBox::Ok |
                                               QMessageBox::Cancel
                                               );
               switch(ret)
               {
                    case QMessageBox::Ok:
                            qDebug()<<"i am ok";
                            break;
                    case QMessageBox::Cancel:
                            qDebug()<<"i am no";
                            break;
                    default:
                            break;
               }
            }
            );
 /*文件对话框*/
    QAction *p5 = menu->addAction("文件对话框");
    connect(p5,&QAction::triggered,
           [=]()
            {
               QString path = QFileDialog::getOpenFileName(
                                            this,
                                            "open",
                                            "../",
                               "source(*.cpp *.h);;Text(*.txt);;All(*.*)"
                                            );
               qDebug() << path;
            }
            );
}

MainWindow::~MainWindow()
{

}

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

运行效果,会产生模态对话框,非模态对话框,关于对话框和问题对话框,以及文件对话框。

非模态对话框有三种方法,(1)类的成员方法(2)new一个新对象(3)设置属性,推荐使用第三种。

关于对话框和问题对话框可以设置不同属性。

文件对话框可以筛选文件类型。

截图展示:

 

共有 人打赏支持
粉丝 7
博文 53
码字总数 21034
×
startstorm
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: