QT----自定义对话框(静态、非静态)、内置对话框(文件、颜色、文字、消息)

对话框

QT中内置了大量的对话框 供开发者使用

自定义对话框

  1. 模态对话框(窗口打开之后,只能关闭之后才能进行编辑)
    阻塞式创建对话框 无法对其他对话框做操作
  2. 非模态对话框(窗口打开之后,还能进行其他编辑)
    阻塞式 激活时可以对其他窗口做操作

模态对话框

创建方法1

QDialog diag(this);
diag.resize(200,200);
   
diag.exec();//防止一闪而过

创建方法2

QDialog diag(this);

diag.setModal(true);
diag.show();

diag.exec();//防止一闪而过
结果

在这里插入图片描述

非模态对话框

ui设计在这里插入图片描述

创建方法1
QDialog diag(this);
diag.resize(200,200);

diag.setModal(false);//也可以不要这句话
diag.show();
diag.exec();//防止一闪而过
创建方法2

QDialog* diag = new QDialog(this);//每次点击的话都会new一个,会导致内存满
diag->resize(200,200);
diag->show();
diag->setAttribute(Qt::WA_DeleteOnClose);//当窗口关闭的时候,释放上次创建的diag,解决上述溢出问题

结果

在这里插入图片描述

QT内置对话框(标准对话框)

  1. 文件对话框 QFileDialog::getOpenFileName
  2. 颜色对话框 QColorDialog::getColor
  3. 文字对话框 QFontDialog::getFont
  4. 消息对话框 QMessageBox::critical//危险的
    QMessageBox::warning
    QMessageBox::information
 connect(ui->filebtn,&QPushButton::clicked,this,[this]()->void
    {
        //文件对话框
                                               //(父亲,标题,默认打开路径,过滤的文件
        QString filename = QFileDialog::getOpenFileName(this,"打开文本文件","F:/","*.txt");
        qDebug() <<filename;


        //颜色对话框
                                            //(默认颜色,父亲,标题)
        QColor color =  QColorDialog::getColor(Qt::blue,this,"文字颜色");
            //ui->label->setStyleSheet("background-color: white;font-size:10px;color:color");
        ui->textEdit->setTextColor(color);
        ui->textEdit->setText("nihao");

        //文字对话框

        bool bl = true;//是否使用用户使用的字体
        QFont font = QFontDialog::getFont(&bl);
        ui->label->setFont(font);
        ui->label->setText("今天也很不错啊!");
        qDebug() <<bl;


        //消息对话框

        QMessageBox::critical(this,"错误","报错",QMessageBox::Close);//危险的
        QMessageBox::warning(this,"警告","报错");
        QMessageBox::information(this,"提示","报错");
                            // (父亲,标题,内容,按钮,回车时默认选择)
        auto btn = QMessageBox::question(this,"问题","  今天星期五吗? ",QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);
        if(btn == QMessageBox::Yes)
        {
            QMessageBox::information(this,"","是的");
        }
        else
        {
            QMessageBox::critical(this,"错误"," 不,你错啦 " );
        }


    });


结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

整合版


#include "Mainwindow.h"
#include "ui_mainwindow.h"

#include <QtDebug>

#include <QMenuBar> //菜单栏
#include <QDialog>
#include <QFileDialog>//文件对话框
#include <QColorDialog>//颜色对话框
#include <QFontDialog>//文字对话框
#include <QMessageBox>//消息对话框(警告,提示,错误...)

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

    //模态对话框
    connect(ui->modbtn,&QPushButton::clicked,this,[this]()->void
    {
      //创建对话框(模态的两种创建方法)
        QDialog diag(this);

        diag.resize(200,200);

        //方式一:
        diag.exec();//防止一闪而过

/*
        //方式二:
        diag.setModal(true);
        diag.show();

        diag.exec();//防止一闪而过
*/
    });

    //非模态对话框
    connect(ui->nomodbtn,&QPushButton::clicked,this,[this]()->void
    {


    //创建对话框(模态的两种创建方法)

        /*
        //方式一:
        QDialog diag(this);
        diag.resize(200,200);
        diag.setModal(false);//也可以不要这句话
        diag.show();
        diag.exec();//防止一闪而过
        */

        QDialog* diag = new QDialog(this);//每次点击的话都会new一个,会导致内存满
        diag->resize(200,200);
        diag->show();
        diag->setAttribute(Qt::WA_DeleteOnClose);//当窗口关闭的时候,释放上次创建的diag,解决上述溢出问题
    });



    /*
     QT内置对话框(标准对话框)
        1.文件对话框 QFileDialog::getOpenFileName
        2.颜色对话框 QColorDialog::getColor
        3.文字对话框 QFontDialog::getFont
        4.消息对话框
                QMessageBox::critical//危险的
                QMessageBox::warning
                QMessageBox::information
    */

    connect(ui->filebtn,&QPushButton::clicked,this,[this]()->void
    {
        //文件对话框
                                               //(父亲,标题,默认打开路径,过滤的文件
        QString filename = QFileDialog::getOpenFileName(this,"打开文本文件","F:/","*.txt");
        qDebug() <<filename;


        //颜色对话框
                                            //(默认颜色,父亲,标题)
        QColor color =  QColorDialog::getColor(Qt::blue,this,"文字颜色");
            //ui->label->setStyleSheet("background-color: white;font-size:10px;color:color");
        ui->textEdit->setTextColor(color);
        ui->textEdit->setText("nihao");

        //文字对话框

        bool bl = true;//是否使用用户使用的字体
        QFont font = QFontDialog::getFont(&bl);
        ui->label->setFont(font);
        ui->label->setText("今天也很不错啊!");
        qDebug() <<bl;


        //消息对话框

        QMessageBox::critical(this,"错误","报错",QMessageBox::Close);//危险的
        QMessageBox::warning(this,"警告","报错");
        QMessageBox::information(this,"提示","报错");
                            // (父亲,标题,内容,按钮,回车时默认选择)
        auto btn = QMessageBox::question(this,"问题","你爱我吗",QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);
        if(btn == QMessageBox::Yes)
        {
            QMessageBox::information(this,"","我也爱你");
        }
        else
        {
            QMessageBox::critical(this,"错误"," 你是爱我的 " );
        }


    });


}

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


END!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值