Qt5:标准对话框 QInputDialog/ QColorDialog/ QFontDialog/ QFileDialog/QMessageBox/QProgressDialog/QWizard

作者及原代码链接:跟小豆君学Qt

跟着学习;完整实现代码;示例截图;

QDialog: 对话窗口的基类

标准对话框:

QInputDialog / QColorDialog / QFontDialog / QFileDialog / QMessageBox / QProgressDialog / QWizard

头文件:

#include <QInputDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
#include <QProgressDialog>
#include <QWizard>

输入对话框

实现: 

void Widget::on_btn_getint_clicked()
{
    bool ok;
    // params: dialogTitle, question, default, minNum, maxNum, step, checked_OK
    int i = QInputDialog::getInt(this, tr("情况"), tr("几岁毕业"), 25, 16, 100, 1, &ok);
    if(ok){
        ui->label->setText(tr("%1").arg(i));
    }
}

void Widget::on_btn_getdouble_clicked()
{
    bool ok;
    double d = QInputDialog::getDouble(this, tr("工作"), tr("薪水"), 1000, 100, 10000, 1, &ok);
    if (ok){
        ui->label->setText(QString("%1").arg(d));
    }
}

void Widget::on_btn_getitem_clicked()
{
    QStringList items;
    items<<tr("LOL")<<tr("Dota")<<tr("Dota2");
    bool ok;
    QString item = QInputDialog::getItem(this, tr("game"), tr("Which do you play?"), items, 0, false, &ok);
    if(ok && !item.isEmpty()){
        ui->label->setText(item);
    }
}


void Widget::on_btn_gettext_clicked()
{
    bool ok;
    // params: this, dialogTitle, question, widget, default, checked_OK
    QString text = QInputDialog::getText(this, tr("promote"), tr("want to change?"), QLineEdit::Normal, tr("lazy"), &ok);
    if(ok && !text.isEmpty()){
        ui->label->setText(text);
    }
}

颜色对话框 

实现: 

void Widget::on_getColor_clicked()
{
    QColorDialog::ColorDialogOptions option;
    if(ui->check_alpha->isChecked()){
        option = QColorDialog::ShowAlphaChannel;
    }
    const QColor color = QColorDialog::getColor(Qt::magenta, this, "choose color", option);
    if(color.isValid()){
        ui->getColor->setText(color.name());
        ui->getColor->setPalette(QPalette(color));
        ui->getColor->setAutoFillBackground(true);
    }
}

文件对话框

实现: 

void Widget::on_btn_dir_clicked()
{
    QString directory = QFileDialog::getExistingDirectory(this, tr("get dir"), "./");
    if(!directory.isEmpty()){
        ui->line_path->setText(directory);
    }
}

void Widget::on_btn_file_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("open a file"), "./", tr("All Files(*);;Text Files (*txt)"));
    if (!fileName.isEmpty()){
        ui->line_path->setText(fileName);
    }
}

void Widget::on_btn_files_clicked()
{
    QStringList files = QFileDialog::getOpenFileNames(this, tr("open files"), "./", tr("All files (*);;Text Files (*.txt)"));
    if(files.count()){
        ui->line_path->setText(QString("[%1]").arg(files.join(", ")));
    }
}

void Widget::on_btn_savefile_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this, tr("save file"), "./", tr("all files(*);; Text files (*.txt)"));
    if(!fileName.isEmpty()){
        ui->line_path->setText(fileName);
    }
}

 字体对话框:

实现:

void Widget::on_getFont_clicked()
{
    bool ok;
    QFont font = QFontDialog::getFont(&ok, ui->label_2->font(), this, tr("choose font"));
    if(ok){
        ui->label_2->setFont(font);
    }
}

消息对话框

实现:

void Widget::on_btn_critical_clicked()
{
    // params: windowTitle, msg, choice1,choice2, choice3
    QMessageBox::critical(this, tr("dangerous"), tr("fix danger"),
                          tr("return"), tr("walk"), tr("ignore"));
}

void Widget::on_btn_info_clicked()
{
    // params: windowTitle, msg, info1, info2, info3
    QMessageBox::information(this, tr("info"), tr("girlfriend?"), tr("impossible"), tr("really impossible"), tr("totally impossible"));
}

void Widget::on_btn_question_clicked()
{
    QMessageBox::question(this, tr("question"), "good shape or beauty",
                          QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
}

void Widget::on_btn_warning_clicked()
{
    QMessageBox msgBox(QMessageBox::Warning, tr("warning"), "don't flirt gf", 0, this);
    msgBox.setDetailedText(("plz don't"));
    msgBox.addButton(tr("Save &Again"), QMessageBox::AcceptRole);
    msgBox.addButton(tr("&Continue"), QMessageBox::RejectRole);
    if(msgBox.exec() == QMessageBox::AcceptRole){
        qDebug()<<"accept";
    }
}

void Widget::on_btn_message_clicked()
{
    message.showMessage(tr("wrong info"));
}

进度对话框 

实现:

void Widget::on_btn_progress_clicked()
{
    int numFiles = 50000;
    QProgressDialog progress("file is copying...", "interupt", 0, numFiles, this);
    progress.setWindowModality(Qt::WindowModal);
    progress.show();

    for(int i = 0; i<numFiles; ++i){
        progress.setValue(i);
        QCoreApplication::processEvents();
        if(progress.wasCanceled()){
            break;
        }
        progress.setValue(numFiles);
    }
}

向导对话框

实现:

void Widget::on_btn_wizard_clicked()
{
    QWizard w(this);
    w.setWindowTitle("guide");

    QWizardPage* page1 = new QWizardPage();
    QWizardPage* page2 = new QWizardPage();
    QWizardPage* page3 = new QWizardPage();

    page1->setTitle("First step");
    page2->setTitle("second step");
    page3->setTitle("third step");

    w.addPage(page1);
    w.addPage(page2);
    w.addPage(page3);

    w.exec();
}

猜你喜欢

转载自blog.csdn.net/francislucien2017/article/details/85249711