【QT】09 对话框

  代码资源:https://download.csdn.net/download/qq_36926037/85035629

9.1 创建项目

  (1)创建一个项目,该项目有一个累继承自QMainWindow类,详细步骤参考:博客:https://blog.csdn.net/qq_36926037/article/details/123720153
  (2)利用界面文件(.ui)创建界面,详细创建步骤参考:博客:https://blog.csdn.net/qq_36926037/article/details/123663392
   创建项目具体步骤参考博客8.1节:https://blog.csdn.net/qq_36926037/article/details/123687483的7.3节
  创建好的项目如图所示:

在这里插入图片描述

9.2 模态/非模态对话框

  一般通过建立连接(connect)的方式触发对话框,即通过传递信号触发对话框
  connect(QAction对象,QAction信号,对话框)
  对话框分类:
  (1)模态对话框:创建对话框后,不可以对其他窗口进行操作。除非关闭该对话框才能进行其他操作。(具有阻塞功能)
  (2)非模态对话框:在创建对话框后,可以对其他的窗口进行操作

9.2.1 模态对话框

  模态对话框: 创建对话框后,不可以对其他窗口进行操作。除非关闭该对话框才能进行其他操作。(具有阻塞功能)

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)
    connect(ui->actionnew,&QAction::triggered,[=]()
    {
        //模态对话框
        QDialog dlg(this);//创建对话框对象并放入对象树
        dlg.resize(100,100);
        dlg.exec();//模态方式创建对话框

    });
}
MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

9.2.2 非模态对话框

  非模态对话框: 创建对话框后,可以对其他窗口进行操作。

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)
    //2.2 模态和非模态对话框
    connect(ui->actionnew,&QAction::triggered,[=]()
    {
        //模态对话框
        QDialog dlg(this);//创建对话框对象并放入对象树(栈上的对象)
        dlg.resize(100,100);
        dlg.exec();//模态方式创建对话框

    });

    connect(ui->actionopen,&QAction::triggered,[=]()
    {
        //非模态对话框

        //QDialog dlg2(this);创建对话框对象并放入对象树
        //上述创建的对话框对象在栈上,当Lambda函数使用结束后,窗口对象就会释放,
        //      所以对话框瞬间消失,因此为解决问题,需要把对象放在堆上。
        QDialog *dlg2=new QDialog(this);
        dlg2->resize(100,100);
        dlg2->show();//非模态方式创建对话框
        dlg2->setAttribute(Qt::WA_DeleteOnClose);
        //上述操作,在点击关闭对话框后,对话框对象就会被释放,
        //      防止重复创建对象引起内存泄露

    });
}
MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述
  

9.3 消息对话框

  消息对话框:包含四个公有成员函数,实现消息功能(错误、信息、问题、警告)
   # include < QMessageBox >

在这里插入图片描述

9.3.1 错误对话框

  代码:
    #include < QMessageBox >
    QMessageBox::critical(this,“critical”,“错误”);

    参数1:父亲;参数2:对话框标题;参数3:提示信息:
在这里插入图片描述

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>
#include <QMessageBox>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)

    //2.2 消息对话框
    //#include <QMessageBox>
    connect(ui->actionopen,&QAction::triggered,[=]()
    {
        //(提示)错误对话框
        QMessageBox::critical(this,"critical","错误");
            //参数1,指向父对象;参数2:消息类型;参数3:消息对话框名称
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

9.3.2 信息对话框

  代码:
    #include < QMessageBox >
    QMessageBox::information(this,“info”,“信息”);

    参数1:父亲;参数2:对话框标题;参数3:提示信息:

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>
#include <QMessageBox>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)

    //2.2 消息对话框
    //#include <QMessageBox>
    connect(ui->actionopen,&QAction::triggered,[=]()
    {

        //(提示)错误对话框
        //QMessageBox::critical(this,"critical","错误");
            //参数1,指向父对象;参数2:消息类型;参数3:消息对话框名称
        //(提示)信息对话框
        QMessageBox::information(this,"info","信息");
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

9.3.3 问题对话框

  代码:
    #include < QMessageBox >
    QMessageBox::question(this,“ques”,“提问”);
    或QMessageBox::question(this,“ques”,“提问”,QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);

    参数1:父亲;参数2:对话框标题;参数3:提示信息;参数4:两个选项;参数5:默认关联回车选项
    返回值为StandButton类型,可以通过返回值判断用户输入

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>
#include <QMessageBox>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)
    
    //2.2 消息对话框
    //#include <QMessageBox>
    connect(ui->actionopen,&QAction::triggered,[=]()
    {

        //(提示)错误对话框
        //QMessageBox::critical(this,"critical","错误");
            //参数1,指向父对象;参数2:消息类型;参数3:消息对话框名称

        //(提示)信息对话框
        //QMessageBox::information(this,"info","信息");

        
        //问题对话框:默认是yes/no两个选项
//       QMessageBox::question(this,"ques","提问");

       QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,
                             QMessageBox::Cancel);
       //      参数1:父亲,参数2:标题,参数3:提示内容;参数4:两个选项;参数5:默认关联回车选项
       if (QMessageBox::Save==QMessageBox::question(this,"ques","提问",
                                                    QMessageBox::Save|QMessageBox::Cancel,
                                                    QMessageBox::Cancel))
       {
           qDebug()<<"选择的是保存"<<endl;
       }
       if (QMessageBox::Cancel==QMessageBox::question(this,"ques","提问",
                                                      QMessageBox::Save|QMessageBox::Cancel,
                                                      QMessageBox::Cancel))
       {
           qDebug()<<"选择的是取消"<<endl;
       }
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

9.3.4 警告对话框

  代码:
    #include < QMessageBox >
    QMessageBox::warning(this,“warning”,“警告”);

    参数1:父亲;参数2:对话框标题;参数3:提示信息;

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>
#include <QMessageBox>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)

    //2.2 消息对话框
    //#include <QMessageBox>
    connect(ui->actionopen,&QAction::triggered,[=]()
    {

        //(提示)错误对话框
        //QMessageBox::critical(this,"critical","错误");
            //参数1,指向父对象;参数2:消息类型;参数3:消息对话框名称

        //(提示)信息对话框
        //QMessageBox::information(this,"info","信息");

        
        //问题对话框:默认是yes/no两个选项
//       QMessageBox::question(this,"ques","提问");
//       QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,
//                             QMessageBox::Cancel);
//       //      参数1:父亲,参数2:标题,参数3:提示内容;参数4:两个选项;参数5:默认关联回车选项
//       if (QMessageBox::Save==QMessageBox::question(this,"ques","提问",
//                                                    QMessageBox::Save|QMessageBox::Cancel,
//                                                    QMessageBox::Cancel))
//       {
//           qDebug()<<"选择的是保存"<<endl;
//       }
//       if (QMessageBox::Cancel==QMessageBox::question(this,"ques","提问",
//                                                      QMessageBox::Save|QMessageBox::Cancel,
//                                                      QMessageBox::Cancel))
//       {
//           qDebug()<<"选择的是取消"<<endl;
//       }
        
        
        //警告对话框
        QMessageBox::warning(this,"warning","警告");
    });

}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

9.4 其他标准对话框

  标准对话框:是QT内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的,比如打卡文件、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。Qt内置的标准对话框可以分为以下几类:
  (1)QColorDialog:选择颜色
  (2)QFileDialog:选择文件或者目录
  (3)QFontDialog:选择字体
  (4)QInputDialog:允许用户输入一个值,并将其值返回
  (5)QMessageBox:模态对话框,用于显示信息、询问问题等
  (6)QPageSetupDialog:为打印机提供纸张相关的选项
  (7)QPrintDialog:打印机配置
  (8)QPrintPreviewDialog:打印预览
  (9)QProgressDialog:显示操作过程

9.4.1 颜色对话框

  代码:
    #include
     QColor color=QColorDialog::getColor(QColor(255,0,0));

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>
#include <QMessageBox>
#include <QDebug>
#include <QColorDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)
    // 2.3 其他一些标准对话框

    connect(ui->actionopen,&QAction::triggered,[=]()
    {
        //颜色对话框
        //#include <QColorDialog>
       QColor color=QColorDialog::getColor(QColor(255,0,0));
       qDebug()<<"r="<<color.red()<<"g="<<color.green()<<" b="<<color.blue();
    });

}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

9.4.2 文件对话框

  代码:
    #include < QFileDialog >
      QString strf=QFileDialog::getOpenFileName(this,“打开文件”,“D:\data”,"(*.rar)");

      参数1:父亲;参数2:对话框标题;参数3:文件路径;参数4:过滤条件。返回值为选取的路径

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>
#include <QMessageBox>
#include <QDebug>
#include <QColorDialog>
#include <QFileDialog>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)

    // 2.3 其他一些标准对话框

    connect(ui->actionopen,&QAction::triggered,[=]()
    {
        //颜色对话框
        //#include <QColorDialog>
//       QColor color=QColorDialog::getColor(QColor(255,0,0));
//       qDebug()<<"r="<<color.red()<<"g="<<color.green()<<" b="<<color.blue();

       //文件对话框
       //#include <QFileDialog>
       QString strf=QFileDialog::getOpenFileName(this,"打开文件","D:\\data","(*.rar)");//打开文件对话框(只显示rar文件)
       //       参数1:父亲;参数2:对话框标题;参数3:文件路径;参数4:过滤条件
       //       返回值为选取的路径
       qDebug()<<strf<<endl;
    });
}
MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

9.4.3 字体对话框

  代码:
    #include
     QFont gf=QFontDialog::getFont(&flag,QFont(“华文仿宋”,36));

     

#include "mainwindow.h"
#include "ui_mainwindow.h"
//(1)引入对话框头文件
#include <QDialog>
#include <QMessageBox>
#include <QDebug>
#include <QColorDialog>
#include <QFileDialog>
#include <QFontDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //(2)通过连接,触发对话框:connect(QAction对象,QAction信号,行为)

    // 2.3 其他一些标准对话框
    connect(ui->actionopen,&QAction::triggered,[=]()
    {
        //颜色对话框
        //#include <QColorDialog>
//       QColor color=QColorDialog::getColor(QColor(255,0,0));
//       qDebug()<<"r="<<color.red()<<"g="<<color.green()<<" b="<<color.blue();

       //文件对话框
       //#include <QFileDialog>
//       QString strf=QFileDialog::getOpenFileName(this,"打开文件","D:\\data","(*.rar)");//打开文件对话框(只显示rar文件)
//       //       参数1:父亲;参数2:对话框标题;参数3:文件路径;参数4:过滤条件
//       //       返回值为选取的路径
//       qDebug()<<strf<<endl;

        //字体对话框
        //#include <QFontDialog>
        bool flag;
        QFont gf=QFontDialog::getFont(&flag,QFont("华文仿宋",36));
        qDebug()<<"字体:"<<gf.family()<<"字号:"<<gf.bold()<<endl;


    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

  
  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值