QT标准对话框

发布于:2024-12-18 ⋅ 阅读:(117) ⋅ 点赞:(0)

一、概述

1.概述

Qt为应用程序设计提供了一些常用的标准对话框,如打开文件对话框、选择颜色对话框、信息提示和确认选择对话框、标准输入对话框等,用户无需自己设计这些常用的对话框,这样可以减少程序设计工作量。

2.实例

二、对话框类型

1.QFileDialog

1.1.打开一个文件

void Dialog::on_openfileBtn_clicked()
{
    QString curPath = QDir::currentPath();
    QString dlgTitle = "选择一个文件";
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
    QString aFileName = QFileDialog::getOpenFileName(this,dlgTitle,curPath, filter);

    if(!aFileName.isEmpty()){
        ui->plainTextEdit->appendPlainText(aFileName);
    }
}

1.2.打开多个文件

void Dialog::on_openfilesBtn_clicked()
{//选择多个文件
    QString curPath = QDir::currentPath();
    QString dlgTitle = "选择多个文件";
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
    QStringList fileList = QFileDialog::getOpenFileNames(this,dlgTitle, curPath, filter);

    for(int i = 0; i<fileList.count(); i++)
    {
        ui->plainTextEdit->appendPlainText(fileList.at(i));
    }
}

1.3.选择已有目录

void Dialog::on_selectdirBtn_clicked()
{
    QString curPath=QCoreApplication::applicationDirPath();
    QString dlgTitle = "选择一个目录";
    QString selectedDir = QFileDialog::getExistingDirectory(this, dlgTitle, curPath, QFileDialog::ShowDirsOnly);

    if(!selectedDir.isEmpty())
        ui->plainTextEdit->appendPlainText(selectedDir);
}

1.4.选择保存文件名

void Dialog::on_saveasFile_clicked()
{
    QString curPath = QCoreApplication::applicationDirPath();
    QString dlgTitle = "保存文件";
    QString filter = "h 文件(*.h);;c++文件(.cpp);;所有文件(*.*)";
    QString aFileName = QFileDialog::getSaveFileName(this, dlgTitle, curPath, filter);
    if(!aFileName.isEmpty())
        ui->plainTextEdit->appendPlainText(aFileName);
}

2.QColorDialog

void Dialog::on_selectcolorBtn_clicked()
{//选择颜色
    QPalette pal = ui->plainTextEdit->palette(); //获取现有palette,getColor需要一个初始颜色作为参数
    QColor iniColor = pal.color(QPalette::Text); //现有的文字颜色
    QColor color = QColorDialog::getColor(iniColor, this, "选择颜色");
    if(color.isValid()){
        pal.setColor(QPalette::Text, color);
        ui->plainTextEdit->setPalette(pal);
    }
}

3.QFontDialog

void Dialog::on_selectfontBtn_clicked()
{
    QFont iniFont = ui->plainTextEdit->font();
    bool ok = false;         //由于getFont返回的font没有类似isValid的函数判断有效性,所以传入ok,返回true则有效
    QFont font = QFontDialog::getFont(&ok, iniFont);
    if(ok){
        ui->plainTextEdit->setFont(font);
    }
}

4.InputDialog标准输入对话框

4.1.输入字符串

void Dialog::on_inputstrBtn_clicked()
{//输入字符串
    QString dlgTitle = "输入文字对话框";
    QString txtLabel = "请输入文件名";
    QString defaultInput = "新建文件.txt";
    QLineEdit::EchoMode echoMode = QLineEdit::Normal;
//    QLineEdit::EchoMode echoMode = QLineEdit::Password;
    bool ok = false;
    QString text = QInputDialog::getText(this, dlgTitle, txtLabel,echoMode, defaultInput, &ok);

    if(ok && !text.isEmpty()){
        ui->plainTextEdit->appendPlainText(text);
    }
}

4.2.输入整数

void Dialog::on_inputIntBtn_clicked()
{//输入整数
    QString dlgTitle = "输入整数对话框";
    QString txtLabel = "设置字体大小";
    int defaultValue = ui->plainTextEdit->font().pointSize();
    int minValue = 6, maxValue = 50, stepValue = 1;
    bool ok = false;
    int  inputValue = QInputDialog::getInt(this, dlgTitle, txtLabel, defaultValue, minValue, maxValue, stepValue, &ok);

    if(ok)
    {
        QFont font = ui->plainTextEdit->font();
        font.setPointSize(inputValue);
        ui->plainTextEdit->setFont(font);
    }
}

4.3.输入浮点数

void Dialog::on_inputfloatBtn_clicked()
{//输入浮点数
    QString dlgTitle = "输入浮点数对话框";
    QString txtLabel = "输入一个浮点数";
    float defaultValue = 3.13;
    float minValue = 0, maxValue = 1000;
    int decimals = 2; //小数点后的位数
    bool ok = false;
    float inputValue = QInputDialog::getDouble(this, dlgTitle, txtLabel, defaultValue, minValue, maxValue, decimals, &ok);

    if(ok)
    {
        QString str = QString::asprintf("输入了一个浮点数:%.2f", inputValue);
        ui->plainTextEdit->appendPlainText(str);
    }
}

4.4.条目自选输入

void Dialog::on_entryBtn_clicked()
{//条目选择输入
    QStringList items;
    items<<"优秀"<<"良好"<<"合格"<<"不合格";
    QString dlgTitle = "条目选择对话框";
    QString txtLabel = "请选择级别";
    int curIndex = 0;    //初始选择项
    bool editable = true;    //ComoBox 是否可编辑
    bool ok = false;
    QString text = QInputDialog::getItem(this, dlgTitle, txtLabel, items, curIndex, editable, &ok);

    if(ok && !text.isEmpty()){
        ui->plainTextEdit->appendPlainText(text);
    }
}

5.QMessageBox消息对话框

5.1.无返回值对话框类型

//以下四种返回按钮只有ok,无需关心对话框的返回值
void Dialog::on_informationBtn_clicked()
{//information
    QString dlgTitle = "information消息框";
    QString strInfo = "文件已经打开,字体大小已设置";
    QMessageBox::warning(this, dlgTitle, strInfo, QMessageBox::Ok, QMessageBox::NoButton);
}


void Dialog::on_warningBtn_clicked()
{//warning
    QString dlgTitle = "warning消息框";
    QString strInfo = "文件内容已经被修改";
    QMessageBox::information(this, dlgTitle, strInfo);
}


void Dialog::on_criticalBtn_clicked()
{//critical
    QString dlgTitle = "warning消息框";
    QString strInfo = "文件内容已经被修改";
    QMessageBox::critical(this, dlgTitle, strInfo);
}


void Dialog::on_aboutBtn_clicked()
{//about
    QString dlgTitle = "about消息框";
    QString strInfo = "我开发的数据查看软件V1.0 \n 保留所有权";
    QMessageBox::about(this, dlgTitle, strInfo);
}

5.2.有返回值对话框类型

void Dialog::on_questionBtn_clicked()
{
    QString dlgTitle = "Question消息框";
    QString strInfo="文件已被修改,是否保存修改?";
    QMessageBox::StandardButton defaultBtn = QMessageBox::NoButton;
    QMessageBox::StandardButton result;//返回选择的按钮
    result = QMessageBox::question(this, dlgTitle, strInfo, QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel, defaultBtn);

    if(result == QMessageBox::Yes)
        ui->plainTextEdit->appendPlainText("Question消息框:Yes被选择");
    else if(result == QMessageBox::No)
        ui->plainTextEdit->appendPlainText("Question消息框:No被选择");
    else if(result == QMessageBox::Cancel)
        ui->plainTextEdit->appendPlainText("Question消息框:Cancel被选择");
    else
        ui->plainTextEdit->appendPlainText("Question消息框:无选择");
}


网站公告

今日签到

点亮在社区的每一天
去签到