Qt 常用文件对话框及消息对话框使用

感兴趣的可以关注一下公众号,会第一时间给您推送更多精彩的内容,欢迎大家前来指正,欢迎欢迎~~请添加图片描述

下载
https://gitee.com/xiaozhu0809/qt-common-standards-dialog-box/tree/master/

在这里插入图片描述

1、文件对话框

在这里插入图片描述

#include <QFileDialog>
// 1、父对象
// 2、对话框标题
// 3、默认路径,.表示当前
// 4、c++ files(*.cpp);; 文件筛选
// 返回值:返回选择的目录路径
QString sPath = QFileDialog::getOpenFileName(this,"文件对话框",".","c++ files(*.cpp);;");

// 要同时选择多个文件对话框
QStringList filename = QFileDialog::getOpenFileNames(this,"文件对话框","D:","files(*.cpp);;");

2、颜色对话框

在这里插入图片描述

#include <QColorDialog>
#include <QColor>
// 1、设置默认颜色为黄色
// 返回值 color选中的颜色
QColor color = QColorDialog::getColor(Qt::yellow);

3、字体对话框

在这里插入图片描述

#include <QFont>
bool ok;
// ok 表示函数是否调用成功
QFont font = QFontDialog::getFont(&ok);
if(ok)
{
	qDebug()<<"成功";
}

demo内部代码

void Dialog::showFileDlg()
{
    // . 表示当前目录
    QString sPath = QFileDialog::getOpenFileName(this,"文件对话框",".","c++ files(*.cpp);;");
    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);
    // 判断是否成功
    if(ok)
    {
        m_fontLineEdit->setFont(font);
    }
}
    m_colorFrame->setFrameStyle(QFrame::Box);
    // 可以填充背景
    m_colorFrame->setAutoFillBackground(true);

4、标准输入对话框

4.1、标准字符串输入对话框

在这里插入图片描述

bool ok;
// 1、父对象
// 2、窗体标题
// 3、对话框标题
// 4、QLineEdit::Normal 普通对话框
// 5、m_nameLabel->text() 设置默认值
// ok 函数调用是否成功
QString str = QInputDialog::getText(this,"标准字符串输入对话框","编辑姓名:",QLineEdit::Normal,m_nameLabel->text(),&ok);
if(ok&&!str.isEmpty())  // isEmpty 空就返回true
{
	qDebug()<<"成功";
}

4.2、标准int数据类型对话框

在这里插入图片描述

// 1、指定父窗体
// 2、设置窗体标题
// 3、设置标题
// 4、设置默认年龄
// 5、0设置最小值
// 6、120设置最大值
// 7、每次增长
// 8、函数是否调用成功
bool ok;
int age = QInputDialog::getInt(this,"标准int数据类型对话框","选择年龄",m_ageLabel->text().toUInt(),0,120,1,&ok);
if(ok)
    qDebug()<<"成功";

4.3、标准条目输入对话框

在这里插入图片描述

QStringList sexList;
sexList<<"男"<<"女"<<"未知";
// 1、指定父窗体
// 2、设置窗体标题
// 3、设置标题
// 4、设置条目
// 5、0 默认选中第一个
// 6、是否可以编辑
// 7、ok是否调用成功
bool ok;
QString sexStr = QInputDialog::getItem(this,"标准条目输入对话框","选择性别:",sexList,0,false,&ok);
if(ok&&!sexStr.isEmpty())
{
    qDebug()<<"成功";
}

4.4、标准double输入框

在这里插入图片描述

// 1、指定父窗体
// 2、设置窗体标题
// 3、设置标题
// 4、设置默认值
// 5、0设置最小值
// 6、100设置最大值
// 7、设置精度
// 8、函数是否调用成功
bool ok;
double score = QInputDialog::getDouble(this,"标准double输入框","请打分:",m_scoreLabel->text().toDouble(),0,100,1,&ok);
if(ok)
    qDebug()<<"成功";

5、进度条对话框

在这里插入图片描述

#include <QDebug>
#include <QProgressDialog>
#include <QCoreApplication>

	QProgressDialog dialog("文件复制进度", "取消", 0, 50000, this);
	dialog.setWindowTitle("进度对话框");	// 设置对话框标题
	dialog.setWindowModality(Qt::WindowModal);	// 设置对话框为模态
	dialog.show();	// 显示
	for(int i=0;i<50000;i++)	// 模拟文件拷贝
	{
		dialog.setValue(i);	// 设置进度条当前值
		QCoreApplication::processEvents();	// 避免窗口冻结
		if (dialog.wasCanceled()) break;	// 按下取消按钮则中断


	}
	dialog.setValue(50000); // 这样才能显示100% 因为for少了一个数
	qDebug() << "复制结束";

6、错误对话框

在这里插入图片描述

#include <QErrorMessage>
QErrorMessage* errordlg = new QErrorMessage(this);
errordlg->setWindowTitle("错误对话框");
errordlg->showMessage("这里是出错信息");

7、向导对话框

在这里插入图片描述

#include <QWizard>
QWizardPage * QtText::createPage1()
{
	QWizardPage* page = new QWizardPage;
	page->setWindowTitle("介绍");
	return page;
}

QWizardPage * QtText::createPage2()
{
	QWizardPage* page = new QWizardPage;
	page->setWindowTitle("用户选择信息");
	return page;
}

QWizardPage * QtText::createPage3()
{
	QWizardPage* page = new QWizardPage;
	page->setWindowTitle("结束");
	return page;
}


QWizard wizard(this);
wizard.setWindowTitle("向导对话框");
wizard.addPage(createPage1());	// 添加向导页面
wizard.addPage(createPage2());	// 添加向导页面
wizard.addPage(createPage3());	// 添加向导页面
wizard.exec();

8、消息对话框

8.1、问题消息框

在这里插入图片描述

// 1、指定父对象
// 2、窗体标题
// 3、对话框内容
// 4、两个按钮
// 5、默认选中
int res = QMessageBox::question(this,"问题消息框","您已打开问题消息框,是否关闭",
                      QMessageBox::Ok|
                      QMessageBox::Cancel,
                      QMessageBox::Ok);
switch(res)
{
    case QMessageBox::Ok:
        m_tipLabel->setText("问题消息框-确定");
        break;
    case QMessageBox::Cancel:
        m_tipLabel->setText("问题消息框取消");
        break;
}

8.2、信息消息框

在这里插入图片描述


    // 1、指定父对象
    // 2、窗体标题
    // 3、对话框内容
    QMessageBox::information(this,"信息提示框","这是信息提示框");

8.3、警告消息框

在这里插入图片描述

    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;
    }

8.4、错误消息框

在这里插入图片描述


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

8.5、关于Qt消息框

在这里插入图片描述

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

8.6、关于消息对话框

在这里插入图片描述

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

8.7、自定义消息对话框

在这里插入图片描述

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

    // 添加按钮
    QPushButton* yes = customMsgBox.addButton("yes",QMessageBox::ActionRole);
    QPushButton* no = customMsgBox.addButton("no",QMessageBox::ActionRole);
    QPushButton* cancel = customMsgBox.addButton(QMessageBox::Cancel);

    // 设置图标
    customMsgBox.setIconPixmap(QPixmap("E:\\Users\\ljc\\Documents\\DialogTest\\1.png"));
    customMsgBox.exec();

    // 判断点击按钮
    if(customMsgBox.clickedButton() == yes)
    {
        m_customLabel->setText("点击yes");
    }
    else if(customMsgBox.clickedButton() == no)
    {
        m_customLabel->setText("点击no");
    }
    else
    {
        m_customLabel->setText("点击cancel");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

讳疾忌医丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值