zoukankan      html  css  js  c++  java
  • QT 创建对话框 Dialog 实例

    1.

    2. dialog.h 头文件

    #ifndef DIALOG_H
    #define DIALOG_H
    
    #include <QDialog>
    
    QT_BEGIN_NAMESPACE
    class QLabel;
    class QErrorMessage;
    QT_END_NAMESPACE
    
    class Dialog : public QDialog
    {
        Q_OBJECT
    
    public:
    
        Dialog(QWidget *parent = 0);
    
    
    private slots:
    
        void getAge();
        void getStature();
        void getSex();
        void getName();
        void getColor();
        void getFont();
    
        void getCriticalMessage();
        void getInformationMessage();
        void getQuestionMessage();
        void getWarningMessage();
        void getErrorMessage();
    
    private:
    
        QLabel *nameLabel;
        QLabel *sexLabel;
        QLabel *ageLabel;
        QLabel *statureLabel;
    
        QLabel *colorLabel;
        QLabel *fontLabel;
    
        QLabel *criticalLabel;
        QLabel *informationLabel;
        QLabel *questionLabel;
        QLabel *warningLabel;
        QLabel *errorLabel;
        QErrorMessage *errorMessageDialog;
    
    };
    
    #endif
    


    3. 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)
    {
    
        setWindowTitle(tr("Standard Dialogs"));
        errorMessageDialog = new QErrorMessage(this);
    
    
        int frameStyle = QFrame::Sunken | QFrame::Panel;
    
    
        //Name
        nameLabel = new QLabel;
        nameLabel->setFrameStyle(QFrame::Sunken | QFrame::Panel);
        QPushButton *nameButton = new QPushButton(tr("&Name"));
    
        //Sex
        sexLabel = new QLabel;
        sexLabel->setFrameStyle(frameStyle);
        QPushButton *sexButton = new QPushButton(tr("&Sex"));
    
        //Age
        ageLabel = new QLabel;
        ageLabel->setFrameStyle(frameStyle);
        QPushButton *ageButton = new QPushButton(tr("&Age"));
    
        //Stature
        statureLabel = new QLabel;
        statureLabel->setFrameStyle(frameStyle);
        QPushButton *statureButton = new QPushButton(tr("S&tature"));
    
        //Color
        colorLabel = new QLabel;
        colorLabel->setFrameStyle(frameStyle);
        QPushButton *colorButton = new QPushButton(tr("&Color"));
    
        //Font
        fontLabel = new QLabel;
        fontLabel->setFrameStyle(frameStyle);
        QPushButton *fontButton = new QPushButton(tr("&Font"));
    
        //Critical MessageBox
        criticalLabel = new QLabel;
        criticalLabel->setFrameStyle(frameStyle);
        QPushButton *criticalButton =
                new QPushButton(tr("Critica&l"));
    
        //Information MessageBox
        informationLabel = new QLabel;
        informationLabel->setFrameStyle(frameStyle);
        QPushButton *informationButton =
                new QPushButton(tr("&Information"));
    
        //Question MessageBox
        questionLabel = new QLabel;
        questionLabel->setFrameStyle(frameStyle);
        QPushButton *questionButton =
                new QPushButton(tr("&Question"));
    
        //Warning MessageBox
        warningLabel = new QLabel;
        warningLabel->setFrameStyle(frameStyle);
        QPushButton *warningButton = new QPushButton(tr("&Warning"));
    
        //Error MessageBox
        errorLabel = new QLabel;
        errorLabel->setFrameStyle(frameStyle);
        QPushButton *errorButton =
                new QPushButton(tr("Show &Message"));
    
    
        connect(ageButton, SIGNAL(clicked()), this, SLOT(getAge()));
        connect(statureButton, SIGNAL(clicked()), this, SLOT(getStature()));
        connect(sexButton, SIGNAL(clicked()), this, SLOT(getSex()));
        connect(nameButton, SIGNAL(clicked()), this, SLOT(getName()));
        connect(colorButton, SIGNAL(clicked()), this, SLOT(getColor()));
        connect(fontButton, SIGNAL(clicked()), this, SLOT(getFont()));
    
        connect(criticalButton, SIGNAL(clicked()), this, SLOT(getCriticalMessage()));
        connect(informationButton, SIGNAL(clicked()),
                this, SLOT(getInformationMessage()));
        connect(questionButton, SIGNAL(clicked()), this, SLOT(getQuestionMessage()));
        connect(warningButton, SIGNAL(clicked()), this, SLOT(getWarningMessage()));
        connect(errorButton, SIGNAL(clicked()), this, SLOT(getErrorMessage()));
    
        //Setup Layout
        QGridLayout *layout = new QGridLayout;
        layout->setColumnStretch(1, 1);
        layout->setColumnMinimumWidth(1, 250);
    
        layout->addWidget(nameButton, 0, 0);
        layout->addWidget(nameLabel, 0, 1);
        layout->addWidget(sexButton, 1, 0);
        layout->addWidget(sexLabel, 1, 1);
        layout->addWidget(ageButton, 3, 0);
        layout->addWidget(ageLabel, 3, 1);
        layout->addWidget(statureButton, 4, 0);
        layout->addWidget(statureLabel, 4, 1);
    
        layout->addWidget(colorButton, 5, 0);
        layout->addWidget(colorLabel, 5, 1);
        layout->addWidget(fontButton, 6, 0);
        layout->addWidget(fontLabel, 6, 1);
    
        layout->addWidget(criticalButton, 7, 0);
        layout->addWidget(criticalLabel, 7, 1);
        layout->addWidget(informationButton, 8, 0);
        layout->addWidget(informationLabel, 8, 1);
        layout->addWidget(questionButton, 9, 0);
        layout->addWidget(questionLabel, 9, 1);
        layout->addWidget(warningButton, 10, 0);
        layout->addWidget(warningLabel, 10, 1);
        layout->addWidget(errorButton, 11, 0);
        layout->addWidget(errorLabel, 11, 1);
    
    
        setLayout(layout);    
    
    }
    
    void Dialog::getAge()
    {
    
        bool ok;
        int age = QInputDialog::getInteger(this,tr("User Age"),
                            tr("Please input age"),ageLabel->text().toInt(),0,150,1,&ok);
        if(ok)
        {
            ageLabel->setText(QString(tr("%1")).arg(age));
        }
    }
    
    void Dialog::getStature()
    {
    
        bool ok;
        double d = QInputDialog::getDouble(this,tr("Stature"),
                            tr("Please input stature"),6782.5,0,65536.00,1,&ok);
        if(ok)
        {
            statureLabel->setText(QString(tr("%1")).arg(d));
        }
    }
    
    void Dialog::getSex()
    {
    
        QStringList items;
        items << tr("male") << tr("female");
    
        bool ok;
        QString sex = QInputDialog::getItem(this,tr("Sex"),
                            tr("Please select sex"),items,0,false,&ok);
        if (ok)
        {
            sexLabel->setText(sex);
        }
    }
    
    void Dialog::getName()
    {
    
        bool ok;
        QString name = QInputDialog::getText(this,tr("User Name"),
                            tr("Please input new name"),QLineEdit::Normal,nameLabel->text(),&ok);
    
    
        if(ok && !name.isEmpty())
        {
            nameLabel->setText(name);
        }
    }
    
    void Dialog::getColor()
    {
        QColor color = QColorDialog::getColor(Qt::green, this);
    
        if (color.isValid())
        {
            colorLabel->setText(color.name());
            colorLabel->setPalette(QPalette(color));
            colorLabel->setAutoFillBackground(true);
        }
    }
    
    void Dialog::getFont()
    {
        bool ok;
        QFont font = QFontDialog::getFont(&ok, QFont(fontLabel->text()), this);
    
        if (ok)
        {
            fontLabel->setText(font.key());
            fontLabel->setFont(font);
        }
    }
    
    void Dialog::getCriticalMessage()
    {
        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::getInformationMessage()
    {
        QMessageBox::StandardButton reply;
        reply = QMessageBox::information(this, tr("QMessageBox::information()"), MESSAGE);
    
        if (reply == QMessageBox::Ok)
        {
            informationLabel->setText(tr("OKOK"));
        }
        else
        {
            informationLabel->setText(tr("Escape"));
        }
    }
    
    void Dialog::getQuestionMessage()
    {
        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::getWarningMessage()
    {
        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::getErrorMessage()
    {
        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."));
    }
    


     

  • 相关阅读:
    协议详解1——概要
    协议学习之 vamei博客系列 总结
    DDOS介绍
    python基础教程总结15——7 自定义电子公告板
    python基础教程总结15——6 CGI远程编辑
    python基础教程总结15——5 虚拟茶话会
    python基础教程总结15——4 新闻聚合
    python基础教程总结15——3 XML构建网址
    如何在远程桌面的服务器上访问本地磁盘
    C# 如何把dataTable以参数的形式传入 sql 存储过程
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648226.html
Copyright © 2011-2022 走看看