QT标准对话框

1.QFileDialog

1.1打开一个文件

QString 
getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options())

实战:

//QString curPath = QDir::currentPath();  // 当前目录
    QString curPath = QApplication::applicationDirPath();  // bin目录
    QString dlgTitle = "选择单个文件";
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
    QString fileName = QFileDialog::getSaveFileName(this, dlgTitle,
                                                         curPath, filter);
    ui->txtEdit->appendPlainText(fileName);

1.2打开多个文件

QStringList 
getOpenFileNames(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options())

 实战:

 QString curPath = QDir::currentPath();
    //QString str1 = QApplication::applicationDirPath();  // bin目录
    //str1 = QApplication::applicationFilePath();         // 完整路径+APP名
    QString dlgTitle = "选择多个文件";
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";
    QStringList fileNames = QFileDialog::getOpenFileNames(this, dlgTitle, curPath, filter);
    QString str;
    foreach(str, fileNames) {
        ui->txtEdit->appendPlainText(str);
    }
    for (int i = 0; i < fileNames.count(); i++) {
        ui->txtEdit->appendPlainText(fileNames[i]);
    }

2.QColorDialog


QColor 
getColor(const QColor &initial = Qt::white, QWidget *parent = Q_NULLPTR, const QString &title = QString(), ColorDialogOptions options = ColorDialogOptions())

实战:

    QPalette pal = ui->txtEdit->palette();
    QColor initColor = pal.color(QPalette::Text);
    QColor color = QColorDialog::getColor(initColor, this, tr("选择颜色"));
    if(color.isValid()) {
        pal.setColor(QPalette::Text, color);
        ui->txtEdit->setPalette(pal);
    }

3.QFontDialog


QFont 
getFont(bool *ok, const QFont &initial, QWidget *parent = Q_NULLPTR, const QString &title = QString(), FontDialogOptions options = FontDialogOptions())
QFont 
getFont(bool *ok, QWidget *parent = Q_NULLPTR)

实战:

    QFont initFont = ui->txtEdit->font();
    bool ok = false;
    QFont font = QFontDialog::getFont(&ok, initFont);
    if(ok) {
        ui->txtEdit->setFont(font);
    }

4.QInputDialog

4.1输入文字


QString 
getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)

 实战:

    bool ok = false;
    QString str = QInputDialog::getText(this, tr("请输入:"),"hehe",QLineEdit::Normal,                 
                                        tr("123"), &ok);

    if(ok && !str.isEmpty()) {
        ui->txtEdit->appendPlainText(str);
    }

4.2输入整数


int 
getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())

实战:

    QString dlgTitle("输入整数对话框");
    QString txtLabel("设置字体大小");
    int minValue = 9, maxValue = 50, stepValue = 1;
    int defaultValue = ui->txtEdit->font().pointSize();
    bool ok = false;
    int inputValue = QInputDialog::getInt(this, dlgTitle, txtLabel, defaultValue,
                                   minValue, maxValue, stepValue, &ok);
    //QString str = QString::number(inputValue);
    //str = str.setNum(num);
    if(ok) {
        QFont font = ui->txtEdit->font();
        font.setPointSize(inputValue);
        ui->txtEdit->setFont(font);
    }

4.3输入浮点数


double 
getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0,     double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())

实战:

    QString dlgTitle("输入浮点数对话框");
    QString txtLabel("输入一个浮点数");
    float minValue = 0, maxValue = 10000;
    int decimals = 2;
    float defaultValue = 3.14;
    bool ok = false;
    float inputValue = QInputDialog::getDouble(this, dlgTitle, txtLabel, defaultValue,
                                   minValue, maxValue, decimals, &ok);
    if(ok) {
        QString str = QString::asprintf("输入了一个浮点数:%.2f", inputValue);
        ui->txtEdit->appendPlainText(str);
    }

4.4下拉列表选择输入


QString 
getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)

实战:

    QString dlgTitle("条目选择对话框");
    QString txtLabel("请选择级别");
    int curIndex = 0;   // 初始选择项
    bool editable = true;   // comboBox是否可编辑
    bool ok = false;
    QStringList items;
    items << "优秀" << "良好" << "合格" << "不合格";
    QString text = QInputDialog::getItem(this, dlgTitle, txtLabel, items,
                                             curIndex, editable, &ok);
    if(ok && !text.isEmpty()) {
        ui->txtEdit->appendPlainText(text);
    }

5.QMessageBox

5.1简单信息提示

      用于显示提示、警告、错误等信息的.


void 
about(QWidget *parent, const QString &title, const QString &text)
void 
aboutQt(QWidget *parent, const QString &title = QString())
StandardButton 
critical(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
StandardButton 
information(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)

StandardButton 
warning(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)

实战:

void Widget::on_btnMsgInformation_clicked()
{
    QMessageBox::information(this, tr("提示"), tr("这是一个信息"));
}

void Widget::on_btnMsgWarning_clicked()
{
    QString title("提示");
    //QMessageBox::StandardButton btn =
    QMessageBox::warning(this, title, QString("warning"));
}

void Widget::on_btnMsgCritical_clicked()
{
    QMessageBox::critical(this, QString("critical"), QString("ceshi"));
}

void Widget::on_btnMsgAbout_clicked()
{
    QMessageBox::about(this, QString("版权"), QString("about jadeshu"));
}

void Widget::on_btnMsgAboutQt_clicked()
{
    QMessageBox::aboutQt(this, QString("jadeshu QT"));
}

 5.2确认选择对话框


StandardButton 
question(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = StandardButtons( Yes | No ), StandardButton defaultButton = NoButton)

实战:

void Widget::on_btnMsgQuestion_clicked()
{
    QString dlgTitle("Question消息框");
    QString strInfo("文件已被修改,是否保存?");
    QMessageBox::StandardButton defaultBtn = QMessageBox::NoButton;

    QMessageBox::StandardButton res = QMessageBox::question(this, dlgTitle, strInfo,
                                      QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,
                                      defaultBtn);
    if(res == QMessageBox::Yes) {
        ui->txtEdit->appendPlainText("Yes被选择");
    } else if(res == QMessageBox::No) {
        ui->txtEdit->appendPlainText("No被选择");
    } else if(res == QMessageBox::Cancel) {
        ui->txtEdit->appendPlainText("Cancel被选择");
    } else {
        ui->txtEdit->appendPlainText("未选择");
    }
}

猜你喜欢

转载自blog.csdn.net/jadeshu/article/details/107072376