首页 > 代码库 > QT中的各种对话框

QT中的各种对话框

大家可以参见QT中各种MessageBox的使用的这篇文章

界面效果图如下,大家可以用代码自己操作

技术分享

diglog.h

 

#ifndef DIALOG_H#define DIALOG_H#include <QDialog>QT_BEGIN_NAMESPACEclass QCheckBox;class QLabel;class QErrorMessage;QT_END_NAMESPACEclass Dialog : public QDialog{    Q_OBJECTpublic:    Dialog(QWidget *parent = 0);private slots:    void setInteger();    void setDouble();    void setItem();    void setText();    void setColor();    void setFont();    void setExistingDirectory();    void setOpenFileName();    void setOpenFileNames();    void setSaveFileName();    void criticalMessage();    void informationMessage();    void questionMessage();    void warningMessage();    void errorMessage();private:    QCheckBox *native;    QLabel *integerLabel;    QLabel *doubleLabel;    QLabel *itemLabel;    QLabel *textLabel;    QLabel *colorLabel;    QLabel *fontLabel;    QLabel *directoryLabel;    QLabel *openFileNameLabel;    QLabel *openFileNamesLabel;    QLabel *saveFileNameLabel;    QLabel *criticalLabel;    QLabel *informationLabel;    QLabel *questionLabel;    QLabel *warningLabel;    QLabel *errorLabel;    QErrorMessage *errorMessageDialog;    QString openFilesPath;};#endif

 

dialog.cpp

 

#include <QtGui>#include "dialog.h"#define MESSAGE     Dialog::tr("<p>Message boxes have a caption, a text, "                "and any number of buttons, each with standard or custom texts."                "<p>Click a button to close the message box. Pressing the Esc button "                "will activate the detected escape button (if any).")Dialog::Dialog(QWidget *parent)    : QDialog(parent){    errorMessageDialog = new QErrorMessage(this);    int frameStyle = QFrame::Sunken | QFrame::Panel;    integerLabel = new QLabel;    integerLabel->setFrameStyle(frameStyle);    QPushButton *integerButton =            new QPushButton(tr("QInputDialog::get&Int()"));    doubleLabel = new QLabel;    doubleLabel->setFrameStyle(frameStyle);    QPushButton *doubleButton =            new QPushButton(tr("QInputDialog::get&Double()"));    itemLabel = new QLabel;    itemLabel->setFrameStyle(frameStyle);    QPushButton *itemButton = new QPushButton(tr("QInputDialog::getIte&m()"));    textLabel = new QLabel;    textLabel->setFrameStyle(frameStyle);    QPushButton *textButton = new QPushButton(tr("QInputDialog::get&Text()"));    colorLabel = new QLabel;    colorLabel->setFrameStyle(frameStyle);    QPushButton *colorButton = new QPushButton(tr("QColorDialog::get&Color()"));    fontLabel = new QLabel;    fontLabel->setFrameStyle(frameStyle);    QPushButton *fontButton = new QPushButton(tr("QFontDialog::get&Font()"));    directoryLabel = new QLabel;    directoryLabel->setFrameStyle(frameStyle);    QPushButton *directoryButton =            new QPushButton(tr("QFileDialog::getE&xistingDirectory()"));    openFileNameLabel = new QLabel;    openFileNameLabel->setFrameStyle(frameStyle);    QPushButton *openFileNameButton =            new QPushButton(tr("QFileDialog::get&OpenFileName()"));    openFileNamesLabel = new QLabel;    openFileNamesLabel->setFrameStyle(frameStyle);    QPushButton *openFileNamesButton =            new QPushButton(tr("QFileDialog::&getOpenFileNames()"));    saveFileNameLabel = new QLabel;    saveFileNameLabel->setFrameStyle(frameStyle);    QPushButton *saveFileNameButton =            new QPushButton(tr("QFileDialog::get&SaveFileName()"));    criticalLabel = new QLabel;    criticalLabel->setFrameStyle(frameStyle);    QPushButton *criticalButton =            new QPushButton(tr("QMessageBox::critica&l()"));    informationLabel = new QLabel;    informationLabel->setFrameStyle(frameStyle);    QPushButton *informationButton =            new QPushButton(tr("QMessageBox::i&nformation()"));    questionLabel = new QLabel;    questionLabel->setFrameStyle(frameStyle);    QPushButton *questionButton =            new QPushButton(tr("QMessageBox::&question()"));    warningLabel = new QLabel;    warningLabel->setFrameStyle(frameStyle);    QPushButton *warningButton = new QPushButton(tr("QMessageBox::&warning()"));    errorLabel = new QLabel;    errorLabel->setFrameStyle(frameStyle);    QPushButton *errorButton =            new QPushButton(tr("QErrorMessage::showM&essage()"));    connect(integerButton, SIGNAL(clicked()), this, SLOT(setInteger()));    connect(doubleButton, SIGNAL(clicked()), this, SLOT(setDouble()));    connect(itemButton, SIGNAL(clicked()), this, SLOT(setItem()));    connect(textButton, SIGNAL(clicked()), this, SLOT(setText()));    connect(colorButton, SIGNAL(clicked()), this, SLOT(setColor()));    connect(fontButton, SIGNAL(clicked()), this, SLOT(setFont()));    connect(directoryButton, SIGNAL(clicked()),            this, SLOT(setExistingDirectory()));    connect(openFileNameButton, SIGNAL(clicked()),            this, SLOT(setOpenFileName()));    connect(openFileNamesButton, SIGNAL(clicked()),            this, SLOT(setOpenFileNames()));    connect(saveFileNameButton, SIGNAL(clicked()),            this, SLOT(setSaveFileName()));    connect(criticalButton, SIGNAL(clicked()), this, SLOT(criticalMessage()));    connect(informationButton, SIGNAL(clicked()),            this, SLOT(informationMessage()));    connect(questionButton, SIGNAL(clicked()), this, SLOT(questionMessage()));    connect(warningButton, SIGNAL(clicked()), this, SLOT(warningMessage()));    connect(errorButton, SIGNAL(clicked()), this, SLOT(errorMessage()));    native = new QCheckBox(this);    native->setText("Use native file dialog.");    native->setChecked(true);    QGridLayout *layout = new QGridLayout;    layout->setColumnStretch(1, 1);    layout->setColumnMinimumWidth(1, 250);    layout->addWidget(integerButton, 0, 0);    layout->addWidget(integerLabel, 0, 1);    layout->addWidget(doubleButton, 1, 0);    layout->addWidget(doubleLabel, 1, 1);    layout->addWidget(itemButton, 2, 0);    layout->addWidget(itemLabel, 2, 1);    layout->addWidget(textButton, 3, 0);    layout->addWidget(textLabel, 3, 1);    layout->addWidget(colorButton, 4, 0);    layout->addWidget(colorLabel, 4, 1);    layout->addWidget(fontButton, 5, 0);    layout->addWidget(fontLabel, 5, 1);    layout->addWidget(directoryButton, 6, 0);    layout->addWidget(directoryLabel, 6, 1);    layout->addWidget(openFileNameButton, 7, 0);    layout->addWidget(openFileNameLabel, 7, 1);    layout->addWidget(openFileNamesButton, 8, 0);    layout->addWidget(openFileNamesLabel, 8, 1);    layout->addWidget(saveFileNameButton, 9, 0);    layout->addWidget(saveFileNameLabel, 9, 1);    layout->addWidget(criticalButton, 10, 0);    layout->addWidget(criticalLabel, 10, 1);    layout->addWidget(informationButton, 11, 0);    layout->addWidget(informationLabel, 11, 1);    layout->addWidget(questionButton, 12, 0);    layout->addWidget(questionLabel, 12, 1);    layout->addWidget(warningButton, 13, 0);    layout->addWidget(warningLabel, 13, 1);    layout->addWidget(errorButton, 14, 0);    layout->addWidget(errorLabel, 14, 1);    layout->addWidget(native, 15, 0);    setLayout(layout);    setWindowTitle(tr("Standard Dialogs"));}void Dialog::setInteger(){//! [0]    bool ok;    int i = QInputDialog::getInt(this, tr("QInputDialog::getInteger()"),                                 tr("Percentage:"), 25, 0, 100, 1, &ok);    if (ok)        integerLabel->setText(tr("%1%").arg(i));//! [0]}void Dialog::setDouble(){//! [1]    bool ok;    double d = QInputDialog::getDouble(this, tr("QInputDialog::getDouble()"),                                       tr("Amount:"), 37.56, -10000, 10000, 2, &ok);    if (ok)        doubleLabel->setText(QString("$%1").arg(d));//! [1]}void Dialog::setItem(){//! [2]    QStringList items;    items << tr("Spring") << tr("Summer") << tr("Fall") << tr("Winter");    bool ok;    QString item = QInputDialog::getItem(this, tr("QInputDialog::getItem()"),                                         tr("Season:"), items, 0, false, &ok);    if (ok && !item.isEmpty())        itemLabel->setText(item);//! [2]}void Dialog::setText(){//! [3]    bool ok;    QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"),                                         tr("User name:"), QLineEdit::Normal,                                         QDir::home().dirName(), &ok);    if (ok && !text.isEmpty())        textLabel->setText(text);//! [3]}void Dialog::setColor(){    QColor color;    if (native->isChecked())        color = QColorDialog::getColor(Qt::green, this);    else        color = QColorDialog::getColor(Qt::green, this, "Select Color", QColorDialog::DontUseNativeDialog);    if (color.isValid()) {        colorLabel->setText(color.name());        colorLabel->setPalette(QPalette(color));        colorLabel->setAutoFillBackground(true);    }}void Dialog::setFont(){    bool ok;    QFont font = QFontDialog::getFont(&ok, QFont(fontLabel->text()), this);    if (ok) {        fontLabel->setText(font.key());        fontLabel->setFont(font);    }}void Dialog::setExistingDirectory(){    QFileDialog::Options options = QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly;    if (!native->isChecked())        options |= QFileDialog::DontUseNativeDialog;    QString directory = QFileDialog::getExistingDirectory(this,                                tr("QFileDialog::getExistingDirectory()"),                                directoryLabel->text(),                                options);    if (!directory.isEmpty())        directoryLabel->setText(directory);}void Dialog::setOpenFileName(){    QFileDialog::Options options;    if (!native->isChecked())        options |= QFileDialog::DontUseNativeDialog;    QString selectedFilter;    QString fileName = QFileDialog::getOpenFileName(this,                                tr("QFileDialog::getOpenFileName()"),                                openFileNameLabel->text(),                                tr("All Files (*);;Text Files (*.txt)"),                                &selectedFilter,                                options);    if (!fileName.isEmpty())        openFileNameLabel->setText(fileName);}void Dialog::setOpenFileNames(){    QFileDialog::Options options;    if (!native->isChecked())        options |= QFileDialog::DontUseNativeDialog;    QString selectedFilter;    QStringList files = QFileDialog::getOpenFileNames(                                this, tr("QFileDialog::getOpenFileNames()"),                                openFilesPath,                                tr("All Files (*);;Text Files (*.txt)"),                                &selectedFilter,                                options);    if (files.count()) {        openFilesPath = files[0];        openFileNamesLabel->setText(QString("[%1]").arg(files.join(", ")));    }}void Dialog::setSaveFileName(){    QFileDialog::Options options;    if (!native->isChecked())        options |= QFileDialog::DontUseNativeDialog;    QString selectedFilter;    QString fileName = QFileDialog::getSaveFileName(this,                                tr("QFileDialog::getSaveFileName()"),                                saveFileNameLabel->text(),                                tr("All Files (*);;Text Files (*.txt)"),                                &selectedFilter,                                options);    if (!fileName.isEmpty())        saveFileNameLabel->setText(fileName);}void Dialog::criticalMessage(){    QMessageBox::StandardButton reply;    reply = QMessageBox::critical(this, tr("QMessageBox::critical()"),                                    MESSAGE,                                    QMessageBox::Abort | QMessageBox::Retry | QMessageBox::Ignore);    if (reply == QMessageBox::Abort)        criticalLabel->setText(tr("Abort"));    else if (reply == QMessageBox::Retry)        criticalLabel->setText(tr("Retry"));    else        criticalLabel->setText(tr("Ignore"));}void Dialog::informationMessage(){    QMessageBox::StandardButton reply;    reply = QMessageBox::information(this, tr("QMessageBox::information()"), MESSAGE);    if (reply == QMessageBox::Ok)        informationLabel->setText(tr("OK"));    else        informationLabel->setText(tr("Escape"));}void Dialog::questionMessage(){    QMessageBox::StandardButton reply;    reply = QMessageBox::question(this, tr("QMessageBox::question()"),                                    MESSAGE,                                    QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);    if (reply == QMessageBox::Yes)        questionLabel->setText(tr("Yes"));    else if (reply == QMessageBox::No)        questionLabel->setText(tr("No"));    else        questionLabel->setText(tr("Cancel"));}void Dialog::warningMessage(){    QMessageBox msgBox(QMessageBox::Warning, tr("QMessageBox::warning()"),                       MESSAGE, 0, this);    msgBox.addButton(tr("Save &Again"), QMessageBox::AcceptRole);    msgBox.addButton(tr("&Continue"), QMessageBox::RejectRole);    if (msgBox.exec() == QMessageBox::AcceptRole)        warningLabel->setText(tr("Save Again"));    else        warningLabel->setText(tr("Continue"));}void Dialog::errorMessage(){    errorMessageDialog->showMessage(            tr("This dialog shows and remembers error messages. "               "If the checkbox is checked (as it is by default), "               "the shown message will be shown again, "               "but if the user unchecks the box the message "               "will not appear again if QErrorMessage::showMessage() "               "is called with the same message."));    errorLabel->setText(tr("If the box is unchecked, the message "                           "won‘t appear again."));}

 

main.cpp

 

#include <QApplication>#include <QTranslator>#include <QLocale>#include <QLibraryInfo>#include "dialog.h"int main(int argc, char *argv[]){    QApplication app(argc, argv);    QString translatorFileName = QLatin1String("qt_");    translatorFileName += QLocale::system().name();    QTranslator *translator = new QTranslator(&app);    if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))        app.installTranslator(translator);    Dialog dialog;    return dialog.exec();}

 

http://www.cnblogs.com/rollenholt/archive/2012/04/14/2446819.html

QT中的各种对话框