QT消息盒子和对话框

 1.消息盒子QMessageBox
         (1)弹出警告盒子
              [static] QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
                                   返回值:你点击的那个按钮
                                      参数: parent --》父窗口this
                                              title --》消息盒子的标题
                                              text --》消息盒子的正文内容
                                              buttons --》你想要在盒子中显示的按钮,默认显示ok按钮,多个按钮使用按位或连接起来
                                              defaultButton --》默认选中的按钮,当你敲回车的时候,默认的按钮就被点击了
        (2)弹出致命错误盒子
            [static] QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
       (3)弹出帮助盒子
            [static] QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)

   2.如何判断你点击了盒子中的哪个按钮
                   思路:通过函数的返回值判断

//登录按钮的槽函数
void MainWindow::on_loginbt_clicked()
{

    //获取输入框中输入的用户名和密码
    QString name=ui->namele->text();
    QString passwd=ui->passle->text();

    //判断用户名或者密码是否正确
    if(name=="gec" && passwd=="123456")
    {
        //跳到下一个界面
        secondwin *newwin=new secondwin();
        newwin->show();
        //把登录界面关闭
        this->close();
    }
    else
    {
        //输入错误,弹出警告盒子
//        QMessageBox::StandardButton ret=QMessageBox::warning(this,"你错了","兄弟,账号或者密码输入有误",QMessageBox::Open|QMessageBox::Save,QMessageBox::Open);
//        if(ret==QMessageBox::Open)  //说明用户点击的是open按钮
//            qDebug()<<"你点击了open";
//        if(ret==QMessageBox::Save)  //说明用户点击的是save按钮
//            qDebug()<<"你点击了save";

        //弹出致命错误盒子
        QMessageBox::StandardButton ret=QMessageBox::critical(this,"你错了","兄弟,账号或者密码输入有误",QMessageBox::Open|QMessageBox::Save,QMessageBox::Open);
        if(ret==QMessageBox::Open)  //说明用户点击的是open按钮
            qDebug()<<"你点击了open";
        if(ret==QMessageBox::Save)  //说明用户点击的是save按钮
            qDebug()<<"你点击了save";

    }
}

 3.对话框
           (1)QT内置的对话框(QT本身自带的对话框)
                      颜色对话框 QColorDialog
                                 [static] QColor QColorDialog::getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString())  //弹出颜色对话框
                                                        返回值:你选中的那个颜色      QColor是QT中专门用来表示各种颜色的一个类
                                                           参数:initial --》颜色对话框默认选中的颜色
                                                                                     QColor(int r, int g, int b)  //构造函数
                                                                     parent --》父窗口this
                                                                     title --》标题名字
                                如何判断用户究竟选中了ok还是选中了cancel?
                                                 bool QColor::isValid() const   //判断颜色是否合法,合法返回true,不合法返回false
                                                         如果用户点击ok,颜色就是合法的
                                                         如果用户点击cancel,颜色就是非法的
                      字体对话框  QFontDialog
                               [static] QFont QFontDialog::getFont(bool *ok, QWidget *parent = nullptr)
                                                      返回值:QFont --》你选中的那个字体
                                                         参数:ok --》判断你是否选中了某个字体,选中了 true   没有选中false
                                                                   parent --》父窗口this
                      文件对话框  QFileDialog 
                              [static] QString QFileDialog::getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString())
                                                     返回值:  你选中的那个文件的绝对路径名
                                                        参数:  parent --》父窗口this
                                                                 caption --》文件对话框的标题
                                                                 dir --》指定你要打开的目录路径,默认打开的是你工程编译产生的临时文件夹路径(build开头的那个路径)
                                                                 filter --》文件过滤器,把你想要文件显示出来,不想要的文件隐藏
         (2)自定义对话框 

   2.1 概念:程序员依据自己的想法去设计一个对话框
                 2.2 模态对话框和非模态对话框:
                            模态对话框:这个对话框不关闭,无法操作其他界面            --》exec()函数显示的就是模态对话框   
                            非模态对话框:这个对话框不关闭,照样可以操作其他界面  --》show()函数显示的就是非模态对话框
                 2.3 如何设计自定义对话框?
                            右键点击工程名--》选择QT,QT设计师界面类--》模板要选择QDialog--》可以给自定义对话框取新的类名--》确认即可

 

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

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

//颜色对话框
void MainWindow::on_pushButton_clicked()
{
    //弹出颜色对话框
    QColor mycolor=QColorDialog::getColor(QColor(255,0,0),this,"彭老师的颜色对话框");
    if(mycolor.isValid())  //说明用户点击了ok
        qDebug()<<"点击了ok";
    else  //说明用户点击了cancel
        qDebug()<<"点击了取消";
}
//字体对话框
void MainWindow::on_pushButton_2_clicked()
{
    bool ok;
    //弹出字体对话框
    QFont myfont=QFontDialog::getFont(&ok,this);
    //判断用户是否选中了某个字体
    if(ok) //用户点击了ok
    {
         qDebug()<<"点击了ok";
         //使用你刚才选中的字体
         ui->pushButton->setFont(myfont);
         ui->pushButton_2->setFont(myfont);
         ui->pushButton_3->setFont(myfont);
    }

    else
        qDebug()<<"点击了取消";


}
//弹出文件对话框
void MainWindow::on_pushButton_3_clicked()
{
    //弹出文件对话框
    QString filepath=QFileDialog::getOpenFileName(this,"彭老师的文件对话框","D:/GZ2162文件","*.jpg *.mp3");
    qDebug()<<"你选中的那个文件是: "<<filepath;
}

 自定义对话框

#include "loginwin.h"
#include "ui_loginwin.h"
#include "regdialog.h"
loginwin::loginwin(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::loginwin)
{
    ui->setupUi(this);
}

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

//注册按钮对应的槽函数
void loginwin::on_regbt_clicked()
{
    //弹出自定义的对话框
    regdialog *dialog=new regdialog(this);

    //显示对话框
    //dialog->show();
    dialog->exec();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqb_newfarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值