【QT】QDialog/ QMessageBox/提示对话框/颜色(文字)------对话框

QDialog—对话框

什么是对话框,如下样式

非模态对话框,即打开以后,我还可以对其他框进行操作。

在这里插入图片描述

模态对话框,打开以后,其他框都不能再操作了

在这里插入图片描述

模态对话框是阻塞对话框

QDialog dig(this);
        //显示模态对话框
        dig.exec();  //在这里阻塞了,只有被关闭,才会向下走
   
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));
        qDebug()<<name.toUtf8().data();

非阻塞对话框


    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        //非模态对话框
        QDialog dig(this);
        //显示非模态对话框
        dig.show();     //该对话框一闪而过,如何解决
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));
        qDebug()<<name.toUtf8().data();
    });
  • 该对话框一闪而过,如何解决

给该对话框new一个空间,只有程序整个关闭时才会被析构

 QDialog *dig = new QDialog(this);

在这里插入图片描述

使用QT,只需要记住常用的信号,和常用的常函数。

根据要设计功能去找那个常方法适合,然后直接拿到代码里来试,试过就知道了。

设置对话框属性

该对话框只能主窗口关闭的时候才会关闭(父类不析构,子类不析构),那么如何让他可以自己关闭呢。

方法如下:设置属性

在这里插入图片描述

在这里插入图片描述

connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        //非模态对话框
        QDialog *dig = new QDialog(this);//指定父对象
        //设置对话框属性
        dig->setAttribute(Qt::WA_DeleteOnClose);
        //显示非模态对话框
        dig->show();     
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));
        qDebug()<<name.toUtf8().data();
    });

在这里插入图片描述

代码中这样的宏,如何去记呢

开头都是QT大头

整个对话框学习的相关代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDebug>
#include <QLabel>
#include <QDialog>    //对话框类
#include <QMessageBox>//提示对话框
#include <QColorDialog>  //颜色对话框
#include <QFontDialog>   //字体对话框

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowIcon(QIcon(":/picture/42.jpg"));
    //this->setFixedSize(1000,1000);
    ui->dockWidget->show();

    QPushButton* button = new QPushButton("--v--",this);
    ui->statusBar->addWidget(button);  //给状态栏加控件

    //状态,服务器链接上小红灯图片变小绿灯(label里面只能放图片 )
    QLabel *label = new QLabel("未连接",this);
    ui->statusBar->addWidget(label);

    //规则    :/
    ui->actionSave_2->setIcon(QIcon(":/picture/45.jpg"));
   // ui->actionOpen->setIcon(QIcon(":/picture/43.jpg"));
    ui->actionClose->setIcon(QIcon(":/picture/44.jpg"));

/*
 *  // ui->Edit->addAction();
    //(设置菜单打开功能)打开一个对话框
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   //打开文件通常有一个返回值                                              //过滤条件,对打开的文件进行过滤
         QString name =  QFileDialog::getOpenFileName(this,"打开文件","home/yangyu/",tr("Images (*.png *.xpm *.jpg)"));
         qDebug()<<name.toUtf8().data();//将标准utf8转换为char*类型
    });

    //模态对话框 ---打开后,其他页面不可点
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        QDialog dig(this);
        //显示模态对话框
        dig.exec();   //在这里阻塞了,只有被关闭,才会向下走
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));

    });
    //非模块对话框------打开后,其他页面可点
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        //非模态对话框
        QDialog *dig = new QDialog(this);//指定父对象
        //设置对话框属性
       dig->setAttribute(Qt::WA_DeleteOnClose);
        //显示非模态对话框
        dig->show();     //该对话框一闪而过,如何解决----设置属性
        //显示文件对话框
        QString name = QFileDialog::getOpenFileName(this,"打开","/home/yangyu/DailyFILE",tr("Images (*.png *.xpm *.jpg)"));
        qDebug()<<name.toUtf8().data();
    });

    //提示对话框
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   //打开文件通常有一个返回值
       //三 QMessageBox::about(this,"about","bug");
       //  QMessageBox::critical(this,"错误","erro,erro!",QMessageBox::Ok,QMessageBox::Cancel);
       // QMessageBox::information(this,"提示","举起手来",QMessageBox::Yes,QMessageBox::No);
       //  QMessageBox::question(this,"问题","你摊上大事了",QMessageBox::Close);
    if(QMessageBox::Open ==QMessageBox::warning(this,"警告","未成年禁止入内",QMessageBox::Open,QMessageBox::Close))
    {
        //显示模态对话框
        QDialog dig(this);
        dig.exec();
    }
    });
    //颜色对话框
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        QColor color = QColorDialog::getColor();
        qDebug()<<color.red()<<color.green()<<color.blue();

    });
    
    //字体对话框
    connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
     bool ok;
     QFont font = QFontDialog::getFont(&ok, QFont("仿宋", 12), this,"字体设置");
     qDebug()<<font.family()<<font.italic()<<font.pointSize()<<font.bold();
    });
*/

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

QMessageBox—提示对话框

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


void 
about(QWidget *parent, const QString &title, const QString &text)
void 
aboutQt(QWidget *parent, const QString &title = QString())
QMessageBox::StandardButton 
critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)
int 
critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)
QMessageBox::StandardButton 
information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton 
information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1 = NoButton)
QMessageBox::StandardButton 
question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = ..., QMessageBox::StandardButton defaultButton = NoButton)
int 
question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)
const QMetaObject 
staticMetaObject
QMessageBox::StandardButton 
warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)
int 
warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)

about用法

  connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   //打开文件通常有一个返回值
        QMessageBox::about(this,"about","bug");
    });

在这里插入图片描述

critical用法

   connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   //打开文件通常有一个返回值
        QMessageBox::critical(this,"错误","erro,erro!",QMessageBox::Ok,QMessageBox::Cancel);
    });

在这里插入图片描述

information用法

 connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {   
        QMessageBox::information(this,"提示","举起手来",QMessageBox::Yes,QMessageBox::No);

    });

在这里插入图片描述

question用法

 connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {  
        QMessageBox::question(this,"问题","你摊上大事了",QMessageBox::Close);
    });

在这里插入图片描述

warning用法

 connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {    
 QMessageBox::warning(this,"警告","未成年禁止入内",QMessageBox::Ok);
    });

在这里插入图片描述

 connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {  
    if(QMessageBox::Open ==QMessageBox::warning(this,"警告","未成年禁止入内",QMessageBox::Open,QMessageBox::Close))
    {
        //显示模态对话框
        QDialog dig(this);
        dig.exec();
    }
    });

在这里插入图片描述

颜色和字体对话框

#include <QColorDialog>  //颜色对话框

在这里插入图片描述

  connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        QColor color = QColorDialog::getColor();
        qDebug()<<color.red()<<color.green()<<color.blue();
    });

在这里插入图片描述

文字对话框

在这里插入图片描述

  connect(ui->actionOpen,&QAction::triggered,this,[=]()
    {
        QColor color = QColorDialog::getColor();
        qDebug()<<color.red()<<color.green()<<color.blue();
    });

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值