使用标准输入框操作系统:Fedora Linux 14
创建文件夹InputDialog,以下是代码(三个文件)
/** Object: InputDialog
** Desc: 使用标准输入框
** File: main.cpp
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Author: LiXiujie
** Date: 2011-05-12
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#include <QApplication> // 所有QT图形化应用程序必须包含此文件,它包含了QT图形化应用程序的各种资源、基本设置、控制流及事件处理等。
#include "InputDialog.h" // 自定义类头文件
int main(int argc, char *argv[]){
QApplication app(argc, argv);
InputDialog *id = new InputDialog();
id->show();
return app.exec();
}
==========================
/** Object: InputDialog
** Desc: 使用标准输入框
** File: InputDialog.h
** Class: InputDialog使用标准输入框类 头文件
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Author: LiXiujie
** Date: 2011-05-12
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#ifndef INPUTDIALOG_H
#define INPUTDIALOG_H
#include <QtGui>
class InputDialog : public QDialog
{
Q_OBJECT
public:
InputDialog();
public:
QPushButton *m_pPBName; // 按钮控件
QPushButton *m_pPBSex;
QPushButton *m_pPBAge;
QPushButton *m_pPBStature;
QLabel *m_pLabel1;
QLabel *m_pLabel2;
QLabel *m_pLabel3;
QLabel *m_pLabel4;
QLabel *m_pLabelName;
QLabel *m_pLabelSex;
QLabel *m_pLabelAge;
QLabel *m_pLabelStature;
private slots:
void slotName();
void slotSex();
void slotAge();
void slotStature();
};
#endif // INPUTDIALOG_H
==========================
/** Object: InputDialog
** Desc: 使用标准输入框
** File: InputDialog.cpp
** Class: InputDialog使用标准输入框类 源文件
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Author: LiXiujie
** Date: 2011-05-12
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#include "InputDialog.h"
InputDialog::InputDialog() : QDialog(){
setWindowTitle(tr("Input Dialog")); // 设置对话框标题
m_pLabel1 = new QLabel(tr("Name : ")); // 生成标签控件实例,并设置显示内容
m_pLabel2 = new QLabel(tr("Sex : "));
m_pLabel3 = new QLabel(tr("Age : "));
m_pLabel4 = new QLabel(tr("Stature : "));
m_pLabelName = new QLabel(tr("LiXiujie"));
m_pLabelName->setFrameStyle(QFrame::Panel|QFrame::Sunken); // 设置标签控件框架样式为面板的、凹陷的。
m_pLabelSex = new QLabel(tr("male")); // male 男 female 女
m_pLabelSex->setFrameStyle(QFrame::Panel|QFrame::Sunken);
m_pLabelAge = new QLabel(tr("25"));
m_pLabelAge->setFrameStyle(QFrame::Panel|QFrame::Sunken);
m_pLabelStature = new QLabel("168.5");
m_pLabelStature->setFrameStyle(QFrame::Panel|QFrame::Sunken);
m_pPBName = new QPushButton;
m_pPBName->setIcon(QIcon("images/btn.png")); // 设置按钮图标
m_pPBSex = new QPushButton;
m_pPBSex->setIcon(QIcon("images/btn.png"));
m_pPBAge = new QPushButton;
m_pPBAge->setIcon(QIcon("images/btn.png"));
m_pPBStature = new QPushButton;
m_pPBStature->setIcon(QIcon("images/btn.png"));
QGridLayout *pLayout = new QGridLayout(this); // 表格布局控件
pLayout->addWidget(m_pLabel1, 0, 0);
pLayout->addWidget(m_pLabelName, 0, 1);
pLayout->addWidget(m_pPBName, 0, 2);
pLayout->addWidget(m_pLabel2, 1, 0);
pLayout->addWidget(m_pLabelSex, 1, 1);
pLayout->addWidget(m_pPBSex, 1, 2);
pLayout->addWidget(m_pLabel3, 2, 0);
pLayout->addWidget(m_pLabelAge, 2, 1);
pLayout->addWidget(m_pPBAge, 2, 2);
pLayout->addWidget(m_pLabel4, 3, 0);
pLayout->addWidget(m_pLabelStature, 3, 1);
pLayout->addWidget(m_pPBStature, 3, 2);
pLayout->setMargin(15); // 设置表格布局四周边空白为15像素。
pLayout->setSpacing(10); // 设置表格布局内部元素间空白为10像素。
pLayout->setColumnMinimumWidth(1, 120); // 设置表格布局中第二列最小宽度为120像素。
/* 绑定按钮单击事件处理函数 */
connect(m_pPBName, SIGNAL(clicked()), this, SLOT(slotName()));
connect(m_pPBSex, SIGNAL(clicked()), this, SLOT(slotSex()));
connect(m_pPBAge, SIGNAL(clicked()), this, SLOT(slotAge()));
connect(m_pPBStature, SIGNAL(clicked()), this, SLOT(slotStature()));
}
void InputDialog::slotName(){
bool ok;
QString name = QInputDialog::getText(this, tr("User Name"),
tr("Please input new name:"), QLineEdit::Normal, m_pLabelName->text(), &ok); // 文本输入对话框
if(ok && !name.isEmpty()) // 文本输入对话框,确定并输入内容不为空
m_pLabelName->setText(name);
}
void InputDialog::slotSex(){
QStringList list; // 字符串链表
list << tr("male") << tr("female");
bool ok;
QString sex = QInputDialog::getItem(this, tr("Sex"),
tr("Please select sex:"), list, 0, false, &ok); // 下拉选项输入对话框
if (ok)
m_pLabelSex->setText(sex);
}
void InputDialog::slotAge(){
bool ok;
int age = QInputDialog::getInteger(this, tr("User Age"),
tr("Please input age:"), m_pLabelAge->text().toInt(), 0, 150, 1, &ok); // 整数数字输入对话框
if(ok)
m_pLabelAge->setText(QString(tr("%1")).arg(age)); // %1用arg()参数age替换
}
void InputDialog::slotStature(){
bool ok;
double d = QInputDialog::getDouble(this, tr("Stature"),
tr("Please input stature:"), m_pLabelStature->text().toDouble(), 0, 230.00, 1, &ok);
if(ok)
m_pLabelStature->setText(QString(tr("%1")).arg(d));
}
按钮图标:images文件夹下