Qt-模态和非模态对话框

菜单栏新建一个选项 new -> actionnew(编译器给的名字)
在这里插入图片描述
代码 完成 点击新建弹出对话框

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug.h"
#include "QDialog"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);

    //点击新建按钮 弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,this,[=](){
    
    
      QDialog dlg(this);
      //创建模态对话框
     // dlg.resize(200,100);
     // dlg.exec();

      //非模态对话框 必须在堆上申请内存,非模态对话框为非阻塞状态.
      //代码会接着往下执行 栈上的局部变量会失去作用.
    QDialog* dlg2=new QDialog(this);
    dlg2->resize(200,100);

    //设置属性  当点击非模态对话框关闭按钮时,销毁对象内存.
    //如果不设置这个值 用户点击关闭后再点新建会一直在堆上创建内存,就会发生内存泄漏
    dlg2->setAttribute(Qt::WA_DeleteOnClose);
    dlg2->show();


    });

}

标准对话框

QColorDialog :选择颜色
QFileDialog :选择文件或者目录

QFontDialog :选择字体
QInputDialog :允许用户输入一个值,并将其值返回

QMessageBox :模块对话框,用于显示信息,询问问题等

QPageSetupDialog :为打印机提供纸张相关的选项
QPrintDialog :打印机配置
QPrintPreiewDialog :打印预览
QProgressDialog :显示操作过程

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug.h"
#include "QDialog"
#include "QMessageBox"
#include "qcolordialog.h"
#include "QFileDialog"
#include "QFontDialog"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);

    //点击新建按钮 弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,this,[=](){
    
    

    //颜色对话框  通过颜色对话框获得选择的颜色
//    QColor color=QColorDialog::getColor(QColor(255,0,0));
//    qDebug()<<"r="<<color.red();
//

   //文件对话框
//   QString fileName= QFileDialog::getOpenFileName(this,      //父窗口
//                                 "打开文件",  //对话框标题
//                                 "./",       //默认打开的目录
//                                 "(*.txt)"   //过滤文件类型
//                                 );
//   //QString类型要转换成char* 来判断
//   if(strcmp(fileName.toUtf8().data(),"")!=0)
//   {
    
    
//        qDebug()<<"打开的文件名是:"<<fileName;
//   }
//   else
//   {
    
    
//        qDebug()<<"点击了取消";
//   }

        //字体对话框
      bool flag;
      QFont font=QFontDialog::getFont(
                  &flag,
                  QFont("黑体",36)//默认打开属性 默认 选中黑体
                  );
      qDebug()<<"字体:"<<font.family();

 });
}

猜你喜欢

转载自blog.csdn.net/qq_41490873/article/details/108465913