您的位置:首页 > 编程语言 > Qt开发

QT 创建对话框 Dialog 实例

2013-08-15 11:06 746 查看
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."));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: