Qt_各种对话框

对话框

模态对话框 需先解决完模态对话框,才能回到原窗口
非模态对话框 表现上与原窗口独立

模态对话框有:
提示对话框 只有一个按钮,常用于 关于对话框
问题对话框 俩个按钮,常用于选择yes or no
文件对话框 打开文件,用于选择什么文件

mainwindow.cpp

#include "mainwindow.h"
#include<QMenuBar>
#include<QMenu>
#include<QAction>
#include<QDialog>
#include<QString>
#include<QtDebug>
#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,

            [=]()
    {
//        QDialog dlg;
//        dlg.show();
//        qDebug() <<"2222";


//        QDialog *p = new QDialog(this);
//        p->show(); 会导致内存泄漏

        QDialog *p = new QDialog;
        p->setAttribute(Qt::WA_DeleteOnClose);
        p->show();

    }
    );

    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,"question"
                                      ,"Are you ok?",
                                      QMessageBox::Yes|QMessageBox::Cancel);
        switch (ret)
        {
         case QMessageBox::Yes:qDebug()<<"i am ok";break;
         case QMessageBox::Cancel:qDebug()<<"i am bed";break;
        default: break;
        }
    }

    );


    QAction *p5 =menu ->addAction("文件对话框");//
    connect(p5,&QAction::triggered,

            [=]()
    {
       QString path =  QFileDialog::getOpenFileName(
                    this,
                   "open",
                   "../",
                   "souce(*.cpp*.h);;"
                   "Text(*.txt);;"
                   "all(*.*)"
                   );

       qDebug()<<path;
    }

    );
}

MainWindow::~MainWindow()
{
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值