标准对话框类QMessageBox、QFileDialog、QColorDialog、QFontDialog、QProgressDialog、QInputDialog

对话框类的使用QFileDialog、QColorDialog、QFontDialog、QProgressDialog、QInputDialog、QMessageBox

对话框类 主要静态函数 函数功能
QFileDialogQString getOpenFileName()
QStringList getOpenFileNames()
QString getSaveFileName()
QString getExistingDirectory()
QUrl getOpenFileUrl() 
选择打开一个文件,返回选择文件的文件名
选择打开多个文件, 返回选择的所有文件的文件名列表
选择保存一个文件,返回保存文件的文件名
选择一个已有的目录,返回所选目录的完整路径
选择打开一个文件,可选择打开远程网络文件
void saveFileContent() 将一个 QByteArray 类型的字节数据数组的内容保存为文件
QColorDialog QColor getColor() 显示选择颜色对话框用于选择颜色,返回值是选择的
QFontDialogQFont getFont() 显示选择字体对话框,返回值是选择的字体
QProgressDialog  显示进度变化的对话框,没有静态函数
QInputDialogQString getText()
 
显示标准输入对话框,输入单行文字
int getInt() 显示标准输入对话框,输入整数
double getDouble() 显示标准输入对话框,输入浮点数
QString getItem() 显示标准输入对话框,从一个下拉列表框中选择输入
QString getMultiLineText() 显示标准输入对话框,输入多行字符串
QMessageBoxStandardButton information() 显示信息提示对话框
StandardButton question() 显示询问并获取是否确认的对话框
StandardButton warning() 显示警告信息提示对话框
StandardButton critical() 显示错误信息提示对话框
void about() 显示设置自定义信息的关于对话框
void aboutQt() 显示关于 Qt 的对话框
QPrintDialog — 打印机设置对话框,没有静态函数
QPrintPreviewDialog — 打印预览对话框,没有静态函数

布局

StandardDialogExample.h

#ifndef STANDARDDIALOGEXAMPLE_H
#define STANDARDDIALOGEXAMPLE_H

#include <QDialog>

namespace Ui {
class StandardDialogExample;
}

class StandardDialogExample : public QDialog
{
    Q_OBJECT

public:
    explicit StandardDialogExample(QWidget *parent = nullptr);
    ~StandardDialogExample();

private slots:
    void do_progress_canceled();

    void on_btnOpen_clicked();

    void on_btnOpenMulti_clicked();

    void on_bntSelDir_clicked();

    void on_btnSave_clicked();

    void on_btnColor_clicked();

    void on_btnFont_clicked();

    void on_btnProgress_clicked();

    void on_btnMsgQuestion_clicked();

    void on_btnMsgInformation_clicked();

    void on_btnInputString_clicked();

    void on_btnInputInt_clicked();

    void on_btnInputFloat_clicked();

    void on_btnInputItem_clicked();

    void on_btnClearText_clicked();

    void on_btnMsgWarning_clicked();

    void on_btnMsgCritical_clicked();

    void on_btnMsgAbout_clicked();

    void on_btnMsgAboutQt_clicked();

private:
    Ui::StandardDialogExample *ui;
};

#endif // STANDARDDIALOGEXAMPLE_H

StandardDialogExample.cpp 

#include "standarddialogexample.h"
#include "ui_standarddialogexample.h"

#include <QDir>
#include <QFileDialog>
#include <QColorDialog>
#include <QPalette>
#include <QFont>
#include <QFontDialog>
#include <QInputDialog>
#include <QMessageBox>
#include <QProgressDialog>
#include <QElapsedTimer>

StandardDialogExample::StandardDialogExample(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::StandardDialogExample)
{
    ui->setupUi(this);
}

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

void StandardDialogExample::do_progress_canceled()
{
    ui->plainTextEdit->appendPlainText("进度对话被取消了");
}

void StandardDialogExample::on_btnOpen_clicked()
{//选择单个文件
    //获取系统当前目录
    QString curPath =QDir::currentPath();
    //获取应用程序的运行路径
    //QCoreApplication::applicationDirPath();
    QString dlgTitle ="选择一个文件";
    QString filter ="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)";
    QString fileName=QFileDialog::getOpenFileName(this,
                                                    dlgTitle,
                                                    curPath,
                                                    filter);
    if(!fileName.isEmpty())
        ui->plainTextEdit->appendPlainText(fileName);

}


void StandardDialogExample::on_btnOpenMulti_clicked()
{
    //获取系统当前目录
    QString curPath =QDir::currentPath();
    //获取应用程序的运行路径
    //QCoreApplication::applicationDirPath();
    QString dlgTitle ="选择一个文件";
    QString filter ="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)";
    QStringList fileList=QFileDialog::getOpenFileNames(this,
                                                    dlgTitle,
                                                    curPath,
                                                    filter);
    for(int i=0;i<fileList.size();i++)
        ui->plainTextEdit->appendPlainText(fileList.at(i));

}


void StandardDialogExample::on_bntSelDir_clicked()
{
    QString curPath= QCoreApplication::applicationDirPath();
    QString title ="请选择一个目录";
    QString selectedDir = QFileDialog::getExistingDirectory(this,title,curPath);
    if(!selectedDir.isEmpty())
        ui->plainTextEdit->appendPlainText(selectedDir);
}


void StandardDialogExample::on_btnSave_clicked()
{
    QString curPath = QCoreApplication::applicationDirPath();
    QString title ="保存文件";
    QString filter ="文本文件(*.txt);;h文件(*.h);;C++文件(*.cpp);所有文件(*.*)";
    QString fileName = QFileDialog::getSaveFileName(this,title,curPath,filter);
    if(!fileName.isEmpty())
        ui->plainTextEdit->appendPlainText(fileName);
}


void StandardDialogExample::on_btnColor_clicked()
{
    QPalette palet = ui->plainTextEdit->palette();
    QColor iniColor = palet.color(QPalette::Text);
    QColor color = QColorDialog::getColor(iniColor,this,"选择颜色");
    if(color.isValid())
    {
        palet.setColor(QPalette::Text,color);
        ui->plainTextEdit->setPalette(palet);
    }
}


void StandardDialogExample::on_btnFont_clicked()
{
    QFont iniFont =ui->plainTextEdit->font();
    bool ok= false;
    QFont font = QFontDialog::getFont(&ok,iniFont);
    if(ok)
        ui->plainTextEdit->setFont(font);
}

void StandardDialogExample::on_btnMsgQuestion_clicked()
{
    QString title ="Question消息框";
    QString strInfo ="文件已被修改,是否保存?";
    QMessageBox::StandardButton defaultBtn = QMessageBox::NoButton;//缺省按钮

    QMessageBox::StandardButton ret;
    ret = QMessageBox::question(this,title,strInfo,
                                QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,defaultBtn);
    QString printText;
    switch(ret)
    {
        case QMessageBox::Yes:
            printText="Question消息框:Yes被选择";
            break;
        case QMessageBox::No:
            printText="Question消息框:No被选择";
            break;
        case QMessageBox::Cancel:
            printText="Question消息框:Cancel被选择";
            break;
        default:
            printText="无选择";
    }
     ui->plainTextEdit->appendPlainText(printText);

}


void StandardDialogExample::on_btnMsgInformation_clicked()
{
    QString title ="Information消息框";
    QString strInfo ="已完成操作";
    QMessageBox::information(this,title,strInfo,
                             QMessageBox::Ok|QMessageBox::NoButton);

}

void StandardDialogExample::on_btnMsgWarning_clicked()
{
    QString title ="警告";
    QString strInfo ="可能有问题";
    QMessageBox::warning(this,title,strInfo,
                          QMessageBox::Ok|QMessageBox::NoButton);

}


void StandardDialogExample::on_btnMsgCritical_clicked()
{
    QString title ="错误";
    QString strInfo ="发生错误";
    QMessageBox::critical(this,title,strInfo,
                         QMessageBox::Ok|QMessageBox::NoButton);

}


void StandardDialogExample::on_btnMsgAbout_clicked()
{
    QString title ="about消息框";
    QString strInfo ="XX 软件V1.0 \nDesigned by cat";
    QMessageBox::about(this,title,strInfo);
}


void StandardDialogExample::on_btnMsgAboutQt_clicked()
{
    QString title ="aboutQt消息框";
    QMessageBox::aboutQt(this,title);
}

void StandardDialogExample::on_btnProgress_clicked()
{
    QString labTxt = "正在复制文件...";
    QString btnTxt = "取消";
    int minValue =0,maxValue =200;
    QProgressDialog dlgProgress(labTxt,btnTxt,minValue,maxValue,this);
    connect(&dlgProgress,SIGNAL(canceled()),this,SLOT(do_progress_canceled()));

    dlgProgress.setWindowTitle("复制文件");
    dlgProgress.setWindowModality(Qt::WindowModal);
    dlgProgress.setAutoReset(true);
    dlgProgress.setAutoClose(true);

    QElapsedTimer msCounter;
    for(int i=minValue;i<maxValue;i++)
    {
        dlgProgress.setValue(i);
        dlgProgress.setLabelText(QString::asprintf("正在复制文件,第%d个",i));
        msCounter.start();
        while(true)
        {
            if(msCounter.elapsed()>30)//使用 QElapsedTimer 停顿 30ms
                break;
        }
        if(dlgProgress.wasCanceled())
            break;
    }
}



void StandardDialogExample::on_btnInputString_clicked()
{
    QString title ="输入文字对话框";
    QString txtLabel ="请输入文件名";
    QString iniInput ="新建文本文件.txt";
    QLineEdit::EchoMode echoMode = QLineEdit::Normal;
    bool ok = false;

    QString retTxt = QInputDialog::getText(this,title,txtLabel,echoMode,iniInput,&ok);
    if(ok&& !retTxt.isEmpty())
        ui->plainTextEdit->appendPlainText(retTxt);
}


void StandardDialogExample::on_btnInputInt_clicked()
{
    QString title ="输入整数对话框";
    QString txtLabel ="设置文本框字体大小";
    int defaultValue = ui->plainTextEdit->font().pointSize();
    int minValue =6,maxValue=50,stepValue=1;

    bool ok = false;

    int inputValue= QInputDialog::getInt(this,title,txtLabel,defaultValue,minValue,maxValue,stepValue,&ok);
    if(ok)
    {
        ui->plainTextEdit->appendPlainText(QString("字体大小被设置为:%1").arg(inputValue));
        QFont font = ui->plainTextEdit->font();
        font.setPointSize(inputValue);
        ui->plainTextEdit->setFont(font);
    }
}


void StandardDialogExample::on_btnInputFloat_clicked()
{
    QString title ="输入浮点数对话框";
    QString txtLabel ="输入一个浮点数";
    float defaultValue = 6.18;

    float minValue =0,maxValue=10000;

    bool ok = false;
    int decimals =2;
    float inputValue= QInputDialog::getDouble(this,title,txtLabel,defaultValue,minValue,maxValue,decimals,&ok);
    if(ok)
    {
        ui->plainTextEdit->appendPlainText(QString::asprintf("输入了一个浮点数:%.2f",inputValue));
    }
}


void StandardDialogExample::on_btnInputItem_clicked()
{
    QStringList items;
    items<<"优秀"<<"良好"<<"合格"<<"不合格";
    QString title ="请选择条目";
    QString txtLabel="请选择级别";
    int curIndex =0;
    bool editable = true;
    bool ok = false;
    QString retTxt = QInputDialog::getItem(this,title,txtLabel,items,curIndex,editable,&ok);
    if(ok&& !retTxt.isEmpty())
        ui->plainTextEdit->appendPlainText(retTxt);

}


void StandardDialogExample::on_btnClearText_clicked()
{
    ui->plainTextEdit->clear();
}



效果

  • 24
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

castlooo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值