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

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

对话框类  主要静态函数  函数功能
QFileDialog QString getOpenFileName()
QStringList getOpenFileNames()
QString getSaveFileName()
QString getExistingDirectory()
QUrl getOpenFileUrl() 
选择打开一个文件,返回选择文件的文件名
选择打开多个文件, 返回选择的所有文件的文件名列表
选择保存一个文件,返回保存文件的文件名
选择一个已有的目录,返回所选目录的完整路径
选择打开一个文件,可选择打开远程网络文件
void saveFileContent()  将一个 QByteArray 类型的字节数据数组的内容保存为文件
QColorDialog  QColor getColor()  显示选择颜色对话框用于选择颜色,返回值是选择的
QFontDialog QFont getFont()  显示选择字体对话框,返回值是选择的字体
QProgressDialog    显示进度变化的对话框,没有静态函数
QInputDialog QString getText()
 
显示标准输入对话框,输入单行文字
int getInt()  显示标准输入对话框,输入整数
double getDouble()  显示标准输入对话框,输入浮点数
QString getItem()  显示标准输入对话框,从一个下拉列表框中选择输入
QString getMultiLineText()  显示标准输入对话框,输入多行字符串
QMessageBox StandardButton 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();
}



效果

相关推荐

  1. Qt标准对话框设置

    2024-07-14 12:38:01       45 阅读
  2. QML Controls模块-标准对话框用法说明

    2024-07-14 12:38:01       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 12:38:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 12:38:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 12:38:01       57 阅读
  4. Python语言-面向对象

    2024-07-14 12:38:01       68 阅读

热门阅读

  1. c++【入门】捡石头

    2024-07-14 12:38:01       20 阅读
  2. 详解 QAxObject

    2024-07-14 12:38:01       11 阅读
  3. windos安装qemu启动树莓派2b连接网卡和openssh-server

    2024-07-14 12:38:01       18 阅读
  4. ARM/Linux嵌入式面经(十五):中科曙光

    2024-07-14 12:38:01       19 阅读
  5. C++ 中的返回值优化

    2024-07-14 12:38:01       20 阅读
  6. 2024/7/14 英语每日一段

    2024-07-14 12:38:01       19 阅读
  7. Python爬虫教程第一篇

    2024-07-14 12:38:01       24 阅读
  8. 使用druid对sql进行血缘解析

    2024-07-14 12:38:01       24 阅读
  9. Spring Boot项目的控制器貌似只能get不能post问题

    2024-07-14 12:38:01       32 阅读
  10. Django是干什么的?好用么?

    2024-07-14 12:38:01       25 阅读
  11. HTTPS 加密流程全解析

    2024-07-14 12:38:01       26 阅读