qt 标准对话框的简单介绍

qt常见的标准对话框主要有,标准文件对话框QFileDialog,标准颜色对话框QColorDialog,标准字体对话框QFontDialog,标准输入对话框QInputDialog,标准消息框QMessageBox......

1.

标准文件对话框QFileDialog,使用函数getOpenFileName()获取用户选择的文件.

    //qt 函数getOpenFileName()参数详情
    static QString getOpenFileName(QWidget *parent = nullptr,            //选择的父类组件
                                   const QString &caption = QString(),   //对话框的标题
                                   const QString &dir = QString(),       //对话框默认打开的目录
                                   const QString &filter = QString(),    //对话框的后缀名过滤器
                                   QString *selectedFilter = nullptr,    //默认的过滤器
                                   Options options = Options());         //对话框参数设定,使用或 | 组合运算


    //示例代码
    //文件路径.打开文件对话框.选中用户选择文件.
    QString sPath = QFileDialog::getOpenFileName(
                                 this,                  //以当前窗口作为父窗口
                                 "标准文件对话框",       //对话框标题
                                 ".",                   //.就是当前目录
                                 "C++ files(*.cpp);;"   //以.cpp .c .h作为后缀名过滤文件
                                 "C files(*.c);;"
                                 "Header files(*.h)");

getOpenFileName()函数的QFileDialog::Options参数枚举值有4个:

//只在文件对话框中显示目录。默认情况下,同时显示文件和目录
QFileDialog::ShowDirsOnly

//不要在文件对话框中解析符号链接。默认情况下,对符号链接进行解析

QFileDialog::DontResolveSymlinks

//如果选择了现有文件,请不要要求 确认。默认情况下,请求确认
QFileDialog::DontConfirmOverwrite

//不使用本地文件对话框
QFileDialog::DontUseNativeDialog

 

2.

标准颜色对话框QColorDialog,使用函数getColor()获取调色板颜色参数.如果用户在打开该对话框时选择了cancel(取消)按钮,则QColor::isValue()函数返回false.获取颜色失败.

    //qt getColor()参数
    static QColor getColor(const QColor &initial = Qt::white,                //默认选中颜色为白色
                           QWidget *parent = nullptr,                        //标准颜色对话框父窗口
                           const QString &title = QString(),                 //对话框标题
                           ColorDialogOptions options = ColorDialogOptions());//对话框外观设置

    //示例代码
    void Dialog::ShowColorDlg(){

        //颜色对话框
        QColor color = QColorDialog::getColor(Qt::yellow);//初始化为黄色
        if(color.isValid()){//判断选中颜色是否有效
            m_colorFrame->setPalette(QPalette(color));//设置调色板...填充边框部件
        }
    }

其中getColor()函数的QColorDialog::ColorDialogOptions参数枚举值有3个:

QColorDialog::ShowAlphaChannel

//允许用户选择颜色的alpha分量

QColorDialog::NoButtons

//不要显示OK和Cancel按钮

QColorDialog::DontUseNativeDialog

//使用Qt的标准颜色对话框,而不是操作系统自带的颜色对话框

3.

标准字体对话框QFontDialog,使用getFont()设置字体,执行一个模态字体对话框并返回一个字体QFont.如果用户单击OK,则返回所选字体。如果用户单击Cancel,则返回初始字体

    //qt getFont()参数
    static QFont getFont(bool *ok, QWidget *parent = nullptr);  //是否获取字体成功,对话框父窗口  
    
    //示例代码
    //显示字体
    void Dialog::ShowFontDlg(){
    
        bool ok;    //字符对话框
        QFont font = QFontDialog::getFont(&ok);//方法是否调用成功...返回字体QFont
        if(ok){//是否获取字体成功
            m_fontLineEdit->setFont(font);
        }
    }

 4.

标准输入对话框QInputDialog,使用getText()获取QString类型文本;使用getItem()创建下拉框选项提供选择输入;getInt()获取int类型的数据;使用getDouble()获取double数据类型.

最后把获取到的QString字符串,int,double数据类型等等,显示到Label标签.

下面的代码中,行编辑器QLineEdit::Normal是正常显示模式.行编辑器的显示模式枚举值有4个:

Normal正常显示,

NoEcho不要显示任何东西.这可能适用于连密码长度都要保密的密码,

Password以密码形式显示,

PasswordEchoOnEdit输入时正常显示,否则以密码方式显示

void InputDlg::editName()
{
    //获取用户输入的文本,标准输入框:QInputDialog
    bool ok;
    QString sName = QInputDialog::getText(this,  //以当前窗口作为父窗口
                          "标准字符串输入对话框", //对话框标题
                          "请编辑姓名:",         //对话框中提示输入标签文本
                          QLineEdit::Normal,     //行编辑器文本显示模式
                          m_nameLabel->text(),  //默认显示.以前Label的文本
                          &ok);                 //函数是否调用成功

    if(ok && !sName.isEmpty()){        //用户编辑输入的不能为空
        m_nameLabel->setText(sName);   //把用户输入的文本显示在Label标签
    }
}


void InputDlg::editSex()
{
    //下拉框选择
    bool ok;//方法调用是否成功
    QStringList sexList;
    sexList << "男" << "女" << "未知";
    QString sSex = QInputDialog::getItem(this, //当前窗口作为父窗口
                          "标准条目输入对话框", //对话框标题
                          "请选择性别:",       //对话框中提示选中项
                          sexList,  //可选项
                          0,        //默认当前选中选项为0(下表为0的元素,即第一个元素)
                          false,    //是否可编辑
                          &ok);     //方法调用是否成功

    if(ok && !sSex.isEmpty()){
        m_sexLabel->setText(sSex);
    }
}


void InputDlg::editAge()
{
    bool ok;
    int sAge = QInputDialog::getInt(this,
                         "标准int数据类型输入对话框",
                         "请编辑年龄:",
                         m_ageLabel->text().toUInt(),
                         0,    //最大值
                         120,  //最小值
                         1,    //步长
                         &ok); //是否获取成功

    if(ok){
        m_ageLabel->setText(QString("%1").arg(sAge));//用arg()函数把int类型转为QString字符串并显示在标签
    }
}


void InputDlg::editScore()
{
    bool ok;
    double sScore = QInputDialog::getDouble(this,
                                            "标准double数据类型输入对话框",
                                            "请打分:",
                                            m_scoreLabel->text().toDouble(),//QString类型转为double类型
                                            0,
                                            100,
                                            1,
                                            &ok);

    if(ok){
        m_scoreLabel->setText(QString::number(sScore));//double转为QString字符串
    }
}

编辑姓名

下拉选择性别选项,这是一个模态的下拉对话框.

5.

标准消息框QMessageBox,

QMessageBox::question问题消息框
    int res = QMessageBox::question(this,
                          "问题消息框",  //对话框标题
                          "您已打开问题消息框,是否关闭?",//显示文本
                          QMessageBox::Ok |    //可选 OK 或者 Cancel按钮
                          QMessageBox::Cancel,
                          QMessageBox::Ok);    //默认选中OK按钮

 

QMessageBox::information()消息提示框
    QMessageBox::information(this,"信息提示框","这是个信息提示框,我也不知道写点啥!");

 

QMessageBox::warning()警告消息框
    int res = QMessageBox::warning(this,
                         "警告消息框",
                         "您有未保存的数据,是否保存?",
                         QMessageBox::Save |     //可选按钮保存save,忽视discard,取消cancel
                         QMessageBox::Discard |
                         QMessageBox::Cancel,
                         QMessageBox::Save);     //默认选中保存

 

QMessageBox::critical()错误消息框
    QMessageBox::critical(this,"错误消息框","发生重大错误!!!");

 

QMessageBox::about()关于消息框
    QMessageBox::about(this,"关于","这是个关于关于的信息.");

 

QMessageBox::aboutQt()关于Qt消息框
    QMessageBox::aboutQt(this,"关于Qt...");

.

以上是关于标准对话框的一些粗略的讲解,对于使用的一些Label标签,QLineEdit行编辑器,QPushButton按钮的一些创建使用就都没有讲解,包括还有Qt 的一些核心特性信号与槽函数的连接,桌面的布局......都没有讲解.若不能很好理解可结合下面的代码参考一下(把代码贴出来也是为了方便我以后查阅).

以下是没有使用设计模式,纯代码布局的实例代码

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include "inputdlg.h"
#include "msgboxdlg.h"

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots://槽函数
    void ShowFileDlg();     //文件路径
    void ShowColorDlg();    //颜色
    void ShowFontDlg();     //字体
    void ShowInputDlg();    //标准输入对话框
    void ShowMsgDlg();      //消息
    void ShowCustomDlg();

private:
    QPushButton* m_fileBtn;     //打开文件对话框按钮
    QLineEdit* m_fileLineEdit;  //显示所选文件路径,编辑器

    QPushButton* m_colorBtn;    //打开颜色对话框...显示用户选中的颜色
    QFrame* m_colorFrame;       //显示所选颜色效果...有边框部件基类

    QPushButton* m_fontBtn;     //打开字体对话框
    QLineEdit* m_fontLineEdit;  //显示所选字符的效果

    QPushButton* m_inputBtn;    //显示输入对话框
    InputDlg* m_inputDlg;       //输入对话框

    QPushButton* m_msgBtn;      //显示消息对话框
    MsgBoxDlg* m_msgboxDlg;     //消息对话框

    QPushButton* m_customBtn;   //自定义消息框
    QLabel* m_customLabel;      //自定义消息框显示

    QGridLayout* m_mainLayout;  //布局管理器
};
#endif // DIALOG_H


inputdlg.h

#ifndef INPUTDLG_H
#define INPUTDLG_H
#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>

//------------标准输入对话框-------------
class InputDlg : public QDialog
{
    Q_OBJECT//元对象系统,槽方法用到
public:
    InputDlg(QWidget* parent = 0);

//槽函数
private slots:
    void editName();
    void editSex();
    void editAge();
    void editScore();


//数据成员
private:
    QLabel* m_nameTitle;    //姓名
    QLabel* m_sexTitle;     //性别
    QLabel* m_ageTitle;     //年龄
    QLabel* m_scoreTitle;   //分数

    QLabel* m_nameLabel;    //"热巴"
    QLabel* m_sexLabel;     //"男"
    QLabel* m_ageLabel;     //"29"
    QLabel* m_scoreLabel;   //"99"

    //修改按钮
    QPushButton* m_nameBtn;
    QPushButton* m_sexBtn;
    QPushButton* m_ageBtn;
    QPushButton* m_scoreBtn;

    //布局管理器
    QGridLayout* m_mainLayout;
};

#endif // INPUTDLG_H

msgboxdlg.h

#ifndef MSGBOXDLG_H
#define MSGBOXDLG_H
#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>//布局管理器


class MsgBoxDlg : public QDialog
{
    Q_OBJECT//支持元对象系统
public:
    MsgBoxDlg(QWidget* parent = 0);

private slots:
     void showQuestionMsgDlg(); //询问并获取是否确认对话框
     void showInforMsgDlg();    //消息提示对话框
     void showWarningMsgDlg();  //警告消息对话框
     void showCriticalMsgDlg(); //错误消息提示对话框
     void showAboutMsgDlg();    //自定义信息的关于对话框
     void showAboutQtMsgDlg();  //关于Qt的对话框

private:
    QLabel* m_tipLabel;
    QPushButton* m_questionBtn;   //询问并获取是否确认的对话框
    QPushButton* m_informationBtn;//信息提示对话框
    QPushButton* m_warningBtn;    //警告信息提示对话框
    QPushButton* m_criticalBtn;   //错误信息提示对话框
    QPushButton* m_aboutBtn;      //设置自定义信息的关于对话框
    QPushButton* m_aboutQtBtn;    //关于Qt的对话框


    QGridLayout* m_mainLayout;//主布局管理器
};

#endif // MSGBOXDLG_H

dialog.cpp

#include "dialog.h"
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QMessageBox>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle("标准对话框示例");

    m_fileBtn = new QPushButton("文件标准对话框");
    m_fileLineEdit = new QLineEdit;//行编辑器.也可new QLineEdit(this)...没有父类就是顶级窗口,顶级部件

    m_colorBtn = new QPushButton("颜色标准对话框");
    //没有指定父类,是因为布局管理器m_mainLayout指定this作为父类,(布局管理器有父类,但部件没有父类)
    //当添加到该布局管理器时所被添加的部件会重新定义他们的父类
    m_colorFrame = new QFrame;//用于显示颜色效果.添加到有父类的布局管理器时,它会重新定义它的父类(this)
    //设置边框风格为Box:有边框
    m_colorFrame->setFrameStyle(QFrame::Box);
    //设置填充背景属性
    m_colorFrame->setAutoFillBackground(true);

    m_fontBtn = new QPushButton("字体标准对话框");
    m_fontLineEdit = new QLineEdit("胃,你好吗?");

    m_inputBtn = new QPushButton("标准输入对话框");
    m_msgBtn = new QPushButton("标准消息对话框");

    m_customBtn = new QPushButton("自定义消息框");
    m_customLabel = new QLabel;
    m_customLabel->setFrameStyle(QFrame::Panel |QFrame::Sunken);//设置边框风格.面板|下沉


    //添加到布局管理器
    m_mainLayout = new QGridLayout(this);//以当前窗体作为父窗体
    m_mainLayout->addWidget(m_fileBtn,0,0);//按钮
    m_mainLayout->addWidget(m_fileLineEdit,0,1);
    m_mainLayout->addWidget(m_colorBtn,1,0);
    m_mainLayout->addWidget(m_colorFrame,1,1);
    m_mainLayout->addWidget(m_fontBtn,2,0);
    m_mainLayout->addWidget(m_fontLineEdit,2,1);
    m_mainLayout->addWidget(m_inputBtn,3,0);//添加的按钮,位置,占用的行列
    m_mainLayout->addWidget(m_msgBtn,3,1);
    m_mainLayout->addWidget(m_customBtn,4,0);
    m_mainLayout->addWidget(m_customLabel,4,1);

    //连接信号与槽(按钮与槽函数响应的连接)
    connect(m_fileBtn,&QPushButton::clicked,this,&Dialog::ShowFileDlg);//按钮m_fileBtn连接ShowFileDlg
    connect(m_colorBtn,&QPushButton::clicked,this,&Dialog::ShowColorDlg);
    connect(m_fontBtn,&QPushButton::clicked,this,&Dialog::ShowFontDlg);
    connect(m_inputBtn,&QPushButton::clicked,this,&Dialog::ShowInputDlg);
    //发送信号者:m_inputBtn按钮;clicked信号,点击信号;this响应对象是当前窗体对象;执行ShowInputDlg槽函数
    connect(m_msgBtn,&QPushButton::clicked,this,&Dialog::ShowMsgDlg);
    connect(m_customBtn,&QPushButton::clicked,this,&Dialog::ShowCustomDlg);
}

Dialog::~Dialog()
{

}

void Dialog::ShowFileDlg()
{
    //文件路径.打开文件对话框.选中用户选择文件.
    QString sPath = QFileDialog::getOpenFileName(
                                 this,
                                 "标准文件对话框",
                                 ".",                   //.就是当前目录
                                 "C++ files(*.cpp);;"
                                 "C files(*.c);;"
                                 "Header files(*.h)");  //过滤文件

                                 //"C++ files(*.cpp);;C files(*.c);;Header files(*.h)"

    //对行编辑器进行设置文本(路径)
    m_fileLineEdit->setText(sPath);//路径显示到界面的行编辑器
}

void Dialog::ShowColorDlg()
{                 //颜色对话框
    QColor color = QColorDialog::getColor(Qt::yellow);//初始化为黄色
    if(color.isValid()){//是否合法
        m_colorFrame->setPalette(QPalette(color));//设置调色板...填充边框部件
    }
}

//显示字体
void Dialog::ShowFontDlg()
{
    bool ok;    //字符对话框
    QFont font = QFontDialog::getFont(&ok);//方法是否调用成功...返回字体QFont
    if(ok){//是否获取字体成功
        m_fontLineEdit->setFont(font);
    }
}

//输入对话框
void Dialog::ShowInputDlg()
{
    m_inputDlg = new InputDlg(this);
    m_inputDlg->show();
}

void Dialog::ShowMsgDlg()
{
    m_msgboxDlg = new MsgBoxDlg(this);//以当前窗体作为父窗体
    m_msgboxDlg->show();
}

void Dialog::ShowCustomDlg()
{
    m_customLabel->setText("自定义消息框...");

    QMessageBox customMsgBox;
    customMsgBox.setWindowTitle("自定义消息框");

    //自定义的2个按钮添加到消息框里面
    QPushButton* yes = customMsgBox.addButton("好吧",QMessageBox::ActionRole);//按钮文本,按钮动作角色
    QPushButton* no = customMsgBox.addButton("算了吧",QMessageBox::ActionRole);//动作按钮角色
    QPushButton* cancel = customMsgBox.addButton(QMessageBox::Cancel);

    customMsgBox.setIconPixmap(QPixmap("msg.png"));//设置图标
    customMsgBox.exec();//运行消息框

    if(customMsgBox.clickedButton() == yes){
        m_customLabel->setText("点了 好吧!");
    }else
    if(customMsgBox.clickedButton() == no){
        m_customLabel->setText("点了 算了吧!");
    }else
    if(customMsgBox.clickedButton() == cancel){
        m_customLabel->setText("点了 取消");
    }
}




inputdlg.cpp

#include "inputdlg.h"
#include <QInputDialog>



InputDlg::InputDlg(QWidget* parent):QDialog(parent)//使用对话框基类parent初始化部件基类
{
    setWindowTitle("输入对话框示例");

    m_nameTitle = new QLabel("姓名: ");
    m_sexTitle = new QLabel("性别: ");
    m_ageTitle = new QLabel("年龄: ");
    m_scoreTitle = new QLabel("打分: ");

    m_nameLabel = new QLabel("热巴");
    m_sexLabel = new QLabel("女");
    m_ageLabel = new QLabel("27");
    m_scoreLabel = new QLabel("95.8");

    m_nameBtn = new QPushButton("编辑姓名");
    m_sexBtn = new QPushButton("编辑性别");
    m_ageBtn = new QPushButton("编辑年龄");
    m_scoreBtn = new QPushButton("编辑分数");

    m_mainLayout = new QGridLayout(this);//布局管理器...当前窗体对象作为它的父窗体

    //添加部件到布局管理器
    m_mainLayout->addWidget(m_nameTitle,0,0);
    m_mainLayout->addWidget(m_nameLabel,0,1);
    m_mainLayout->addWidget(m_nameBtn,0,2);

    m_mainLayout->addWidget(m_sexTitle,1,0);
    m_mainLayout->addWidget(m_sexLabel,1,1);
    m_mainLayout->addWidget(m_sexBtn,1,2);

    m_mainLayout->addWidget(m_ageTitle,2,0);
    m_mainLayout->addWidget(m_ageLabel,2,1);
    m_mainLayout->addWidget(m_ageBtn,2,2);

    m_mainLayout->addWidget(m_scoreTitle,3,0);
    m_mainLayout->addWidget(m_scoreLabel,3,1);
    m_mainLayout->addWidget(m_scoreBtn,3,2);

    m_mainLayout->setSpacing(20);//设置部件间的间隙.单位:像素
    m_mainLayout->setMargin(10); //设置部件与窗体的间隙

    //连接槽方法
    //连接按钮m_nameBtn与槽方法editName
    connect(m_nameBtn,&QPushButton::clicked,this,&InputDlg::editName);
    connect(m_sexBtn,&QPushButton::clicked,this,&InputDlg::editSex);
    connect(m_ageBtn,&QPushButton::clicked,this,&InputDlg::editAge);
    connect(m_scoreBtn,&QPushButton::clicked,this,&InputDlg::editScore);



}


void InputDlg::editName()
{
    //获取用户输入的文本,标准输入框:QInputDialog
    bool ok;
    QString sName = QInputDialog::getText(this,
                          "标准字符串输入对话框",
                          "请编辑姓名:",
                          QLineEdit::Normal,
                          m_nameLabel->text(), //默认显示.以前的文本
                          &ok);                //函数是否调用成功

    if(ok && !sName.isEmpty()){         //用户编辑输入的不能为空
        m_nameLabel->setText(sName);    //把用户输入的文本显示在Label标签
    }
}


void InputDlg::editSex()
{
    //下拉框选择
    bool ok;//方法调用是否成功
    QStringList sexList;
    sexList << "男" << "女" << "未知";
    QString sSex = QInputDialog::getItem(this,//下拉框选择
                          "标准条目输入对话框",
                          "请选择性别:",
                          sexList,  //可选项
                          0,        //当前选中选项
                          false,    //是否可编辑
                          &ok);     //方法调用是否成功

    if(ok && !sSex.isEmpty()){
        m_sexLabel->setText(sSex);
    }
}


void InputDlg::editAge()
{
    bool ok;
    int sAge = QInputDialog::getInt(this,
                         "标准int数据类型输入对话框",
                         "请编辑年龄:",
                         m_ageLabel->text().toUInt(),
                         0,
                         120,
                         1,
                         &ok);

    if(ok){
        m_ageLabel->setText(QString("%1").arg(sAge));//转为字符串
    }
}


void InputDlg::editScore()
{
    bool ok;
    double sScore = QInputDialog::getDouble(this,
                                            "标准double数据类型输入对话框",
                                            "请打分:",
                                            m_scoreLabel->text().toDouble(),
                                            0,
                                            100,
                                            1,
                                            &ok);

    if(ok){
        m_scoreLabel->setText(QString::number(sScore));//double转为QString字符串
    }
}


msgboxdlg.cpp

#include "msgboxdlg.h"
#include<QMessageBox>


MsgBoxDlg::MsgBoxDlg(QWidget* parent):QDialog(parent)
{
    setWindowTitle("标准信息对话框集合");
    //构造部件
    m_tipLabel = new QLabel("请选择一种消息框");
    m_questionBtn = new QPushButton("问题消息框");
    m_informationBtn = new QPushButton("信息消息框");
    m_warningBtn = new QPushButton("警告消息框");
    m_criticalBtn = new QPushButton("错误消息框");
    m_aboutBtn = new QPushButton("关于消息框");
    m_aboutQtBtn = new QPushButton("关于Qt消息框");

    //布局界面
    m_mainLayout = new QGridLayout(this);//以当前对象作为父窗体
    m_mainLayout->addWidget(m_tipLabel,0,0,1,2);//通过addWidget添加部件.0行0列,占1行2列
    m_mainLayout->addWidget(m_questionBtn,1,0);
    m_mainLayout->addWidget(m_informationBtn,1,1);
    m_mainLayout->addWidget(m_warningBtn,2,0);
    m_mainLayout->addWidget(m_criticalBtn,2,1);
    m_mainLayout->addWidget(m_aboutBtn,3,0);
    m_mainLayout->addWidget(m_aboutQtBtn,3,1);

    //连接信号与槽
    connect(m_questionBtn,&QPushButton::clicked,//点击信号
            this,&MsgBoxDlg::showQuestionMsgDlg);
    connect(m_informationBtn,&QPushButton::clicked,
            this,&MsgBoxDlg::showInforMsgDlg);
    connect(m_warningBtn,&QPushButton::clicked,
            this,&MsgBoxDlg::showWarningMsgDlg);
    connect(m_criticalBtn,&QPushButton::clicked,
            this,&MsgBoxDlg::showCriticalMsgDlg);
    connect(m_aboutBtn,&QPushButton::clicked,
            this,&MsgBoxDlg::showAboutMsgDlg);
    connect(m_aboutQtBtn,&QPushButton::clicked,
            this,&MsgBoxDlg::showAboutQtMsgDlg);
}

void MsgBoxDlg::showQuestionMsgDlg()
{
    m_tipLabel->setText("问题消息框");
    int res = QMessageBox::question(this,
                          "问题消息框",//标题
                          "您已打开问题消息框,是否关闭?",//显示文本
                          QMessageBox::Ok |         //可选 OK 或者 Cancel按钮
                          QMessageBox::Cancel,
                          QMessageBox::Ok);         //默认选中OK按钮
    switch(res){
    case QMessageBox::Ok:
        m_tipLabel->setText("问题消息框-确定");
        break;
    case QMessageBox::Cancel:
        m_tipLabel->setText("问题消息框-取消");
        break;
    default:
        break;
    }
}

void MsgBoxDlg::showInforMsgDlg()
{
    m_tipLabel->setText("信息消息框");
    QMessageBox::information(this,"信息提示框","这是个信息提示框,我也不知道写点啥!");
}

void MsgBoxDlg::showWarningMsgDlg()
{
    m_tipLabel->setText("警告消息框");
    int res = QMessageBox::warning(this,
                         "警告消息框",
                         "您有未保存的数据,是否保存?",
                         QMessageBox::Save |
                         QMessageBox::Discard |
                         QMessageBox::Cancel,
                         QMessageBox::Save);//默认

    switch(res){
    case QMessageBox::Save:
        m_tipLabel->setText("点击了保存");
        break;
    case QMessageBox::Discard:
        m_tipLabel->setText("点击了忽视");
        break;
    case QMessageBox::Cancel:
        m_tipLabel->setText("点击了取消");
        break;
    default:
        break;
    }
}

void MsgBoxDlg::showCriticalMsgDlg()
{
    m_tipLabel->setText("错误消息框");
    QMessageBox::critical(this,"错误消息框","发生重大错误!!!");
}

void MsgBoxDlg::showAboutMsgDlg()
{
    m_tipLabel->setText("关于消息框");
    QMessageBox::about(this,"关于","这是个关于关于的信息.");
}

void MsgBoxDlg::showAboutQtMsgDlg()
{
    m_tipLabel->setText("关于Qt消息框");
    QMessageBox::aboutQt(this,"关于Qt...");
}

main.cpp

#include "dialog.h"

#include <QApplication>

//文件对话框
//颜色对话框
//字体对话框
//标准输入对话框
//消息框
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    Dialog w;
    w.show();
    return a.exec();
}

all~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/243838.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT 5 调试软件+Linux下调用脚本shell-经验总结+初步调试+基础样例】

【QT 5 调试软件Linux下调用脚本shell-经验总结初步调试基础样例】 1、前言2、实验环境3、自我总结4、实验过程&#xff08;1&#xff09;准备工作-脚本1&#xff09;、准备工作-编写运行脚本文件2&#xff09;、给权限3&#xff09;、运行脚本 &#xff08;2&#xff09;进入q…

学习openAI 短长期AGI计划、使命、宪章、开创性研究、产品、工作待遇等

网站的设计&#xff1a;简洁而现代 主页 使命&#xff1a;Creating safe AGI that benefits all of humanity. &#xff08;比人类更聪明的人工智能系统&#xff09;&#xff08;自己实现或帮别人实现都认为是达成使命&#xff09;&#xff08;造福全人类&#xff1a;最大限…

windows任务计划的创建、导出和导入

创建任务计划 任务名称 任务触发器 执行bat的话起始于必须填写 创建成功 导出任务计划 选择导出路径 导出成功 导入任务计划 可视化界面导入任务计划 选择任务计划的xml文件 点击确定 导入成功 命令行导入计划任务 cd /d D:\迅雷下载schtasks.exe /create /tn 1234 /xml 123…

Ubuntu 22.04 Tesla V100s显卡驱动,CUDA,cuDNN,MiniCONDA3 环境的安装

今天来将由《蓝创精英团队》带来一个Ubuntu 显卡环境的安装&#xff0c;主要是想记录下来&#xff0c;方便以后快捷使用。 主要的基础环境 显卡驱动 (nvidia-smi)CUDA (nvidia-smi 可查看具体版本)cuDNN (cuda 深度学习加速库)Conda python环境管理(Miniconda3) Nvidia 驱动…

yolov8实时推理目标识别、区域分割、姿态识别 Qt GUI

介绍一个GUI工具&#xff0c;可以实时做yolov8模型推理&#xff0c;包括目标检测、姿态识别、跟踪、区域分割等操作。 可以接入图像、视频或者RTSP视频流进行验证。 推理模型用的是yolov8转onnx之后的。用ultralytics自带的转换即可&#xff0c;不用带NMS。 框架用的是Qt 任…

代码随想录刷题题Day13

刷题的第十三天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day13 任务 ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数 1 二叉树的最大…

戴尔外星人Alienware m15 R7原装出厂Win11预装oem系统

链接&#xff1a;https://pan.baidu.com/s/1_ISrHkLDXV3H5iB5k3oldA?pwd4ba9 提取码&#xff1a;4ba9 原厂Windows11系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、MyAlienware、戴尔外星人控制中心等预装程序 如果不是想要的型号或者不确定具…

【SpringBoot】进阶之Freemarker运用(一起探索freemarker的奥秘吧)

前言 在上一期的博客分享中&#xff0c;我们一起了解了有关SpringBoot的一些理论知识以及简单的运用方法。今天我们进一步的了解&#xff0c;今天给大家分享的是Freemarker的基础使用及案例演示。请认真仔细观看哦 一、FreeMarker简介 1. 概述&#xff08;什么是FreeMarker&am…

[OpenWrt]RAX3000一根线实现上网和看IPTV

背景&#xff1a; 1.我家电信宽带IPTV 2.入户光猫&#xff0c;桥接模式 3.光猫划分vlan&#xff0c;将上网信号IPTV信号&#xff0c;通过lan口&#xff08;问客服要光猫超级管理员密码&#xff0c;具体教程需要自行查阅&#xff0c;关键是要设置iptv在客户侧的vlan id&#…

Linux完成mysql数据库的备份与恢复

背景&#xff1a; 在进行数据报表的测试过程中&#xff0c;为了让我们的测试数据更加真实&#xff0c;因此我们需要同步生产数据到测试环境。方式有很多种&#xff0c;我这里介绍的是通过Linux完成数据同步。 备份数据&#xff1a; 执行命令&#xff1a;mysqldump -uxxx -pxxx…

一文带你掌握Spring事务核心:TransactionDefinition详解!

TransactionDefinition是Spring框架中用于定义事务属性的核心接口。在Spring的事务管理中&#xff0c;这个接口扮演着至关重要的角色&#xff0c;它允许开发者定制事务的各种属性&#xff0c;如隔离级别、传播行为、超时时间以及是否只读。 基本介绍 TransactionDefinition 接…

【抄作业】ImportError :cannot import name xxxxxx ,原博主Activewaste

前情介绍 网上关于这种问题的解决方案一大堆&#xff0c;但是绝大多数都是不适用&#xff0c;或者说解决不了问题&#xff0c;我根据别人所遇到的和我自己遇到的&#xff0c;对这个问题整理了一下&#xff0c;希望能解决这个问题。 问题分析 一、缺少这个module或者func或者p…

代码随想录算法训练营第五十二天 _ 动态规划_300. 最长递增子序列、674.最长连续递增序列、718.最长重复子数组。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 300. 最长递增子序列 动态规划五…

外汇天眼:投资者最大的敌人——你的大脑

人类大脑的三层构成 为了深入了解投资者做出非理性决策的原因&#xff0c;考虑人脑及其对快乐和痛苦的反应是很有启发性的。 我们的大脑已经进化了数百万年&#xff0c;由三层组成。 核心是我们原始的大脑&#xff0c;它提供了维持我们生存的战斗或逃跑本能。 上面覆盖着一个…

前端如何使用express写一个简单的服务

相信不少前端平常在日常工作中肯遇见过后端API接口没开发出来的时候吧 前端提升小技巧 自己使用nodejs——express ,koa&#xff0c;egg开发接口吧(本人比较喜欢egg和express) 今天先分享一下express 下面是一个简单的demo 1、首先咱们可以新建一个文件夹,创建一个app.js 下…

循环神经网络(1)循环神经网络的记忆能力实验

循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类具有短期记忆能力的神经网络&#xff0e;在循环神经网络中&#xff0c;神经元不但可以接受其他神经元的信息&#xff0c;也可以接受自身的信息&#xff0c;形成具有环路的网络结构&#xff…

Github、Gitee优秀的开源项目分享

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;❤️ ❤️ ❤️ 资源收集不易&#xff0c;如果喜欢可以关注我哦&#xff01; ​如果本篇内容对你有所启发&#xff0c;欢迎访问我的个人博客了解更多内容&#xff1a;链接地址 ​ Java 项目 javacore - Java …

ArkTS组件通信

父子通信 情况一&#xff1a;子组件只展示父组件中的状态 父组件通过 State修饰符 定义变量&#xff0c;子组件通过 Prop修饰符 获取变量。 Prop是 「单向传递」&#xff0c;父组件将变量「拷贝」一份交给子组件使用&#xff0c;子组件不可修改变量。 父组件 // 声明变量 …

java写个爬虫抓取汽车之家车型配置参数

前几天有个搞工程的表弟找我&#xff0c;问我什么车好&#xff0c;可以经常跑工地的&#xff0c;看上去又有面子。于是我挥动发财的小手&#xff0c;写一个爬虫程序&#xff0c;筛选并整理了一些数据&#xff0c;并附上下载的图片提供参考&#xff0c;看中了果断第二天提车到手…

C#教程(一):面向对象

1、介绍 C#是一种多范式编程语言&#xff0c;但其中一个主要的编程范式是面向对象编程&#xff08;OOP&#xff09;。面向对象编程有一些特点&#xff0c;而C#提供了丰富的功能来支持这些特点。 2、面向对象特点 封装&#xff08;Encapsulation&#xff09;&#xff1a; 封装…