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("未選擇");
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章