.h
#ifndef INPUTDIALOG_H
#define INPUTDIALOG_H
#include <QDialog>
#include <QLabel>
#include <QPushButton>
class InputDlg:public QDialog
{
Q_OBJECT
public:
InputDlg();
public:
QPushButton *nameButton; //姓名
QPushButton *sexButton; //性别
QPushButton *ageButton; //年龄
QPushButton *statureButton; //身高
QLabel *label1;
QLabel *label2;
QLabel *label3;
QLabel *label4;
QLabel *namelabel;
QLabel *sexlabel;
QLabel *agelabel;
QLabel *staturelabel;
private slots:
void slotName();
void slotSex();
void slotAge();
void slotStature();
};
#endif // INPUTDIALOG_H
.c
#include"inputdialog.h"
#include <QGridLayout>
#include <QInputDialog>
//构造函数
InputDlg::InputDlg()
{
//设置窗体主题
setWindowTitle("Input Dialog");
//创建各个标签对象
label1 = new QLabel(tr("Name :")); //此为一种初始化label1显示字符的方式
label2 = new QLabel;
label2->setText("Sex :"); //此为第二种label的显示方式
label3 = new QLabel(tr("Age :"));
label4 = new QLabel(tr("Stature"));
namelabel = new QLabel(tr("李明"));
//QFrame::Panel QFrame画一个面板使内容看起来凸起或者凹陷
//QFrame::Sunken 框架和内容看起来凹陷,有3D效果Sunken凹陷 ised凸起 plain平的
namelabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);//设置框架风风格
sexlabel = new QLabel(tr("男"));
sexlabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
agelabel = new QLabel(tr("18"));
agelabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
staturelabel = new QLabel(tr("185"));
staturelabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
//创建各修改按钮
nameButton = new QPushButton;
// nameButton->setIcon(QIcon("btn.png")); //图标可以把按键整图标需要先把资源添加到工程中
nameButton->setText("...");
sexButton = new QPushButton("...");
ageButton = new QPushButton("...");
statureButton = new QPushButton;
statureButton->setText("...");
//布局管理
QGridLayout *layout = new QGridLayout(this);
layout->addWidget(label1,0,0);
layout->addWidget(namelabel,0,1);
layout->addWidget(nameButton,0,2);
layout->addWidget(label2,1,0);
layout->addWidget(sexlabel,1,1);
layout->addWidget(sexButton,1,2);
layout->addWidget(label3,2,0);
layout->addWidget(agelabel,2,1);
layout->addWidget(ageButton,2,2);
layout->addWidget(label4,3,0);
layout->addWidget(staturelabel,3,1);
layout->addWidget(statureButton,3,2);
//信号与曹函数
connect(nameButton,SIGNAL(clicked()),this,SLOT(slotName()));
connect(sexButton,SIGNAL(clicked()),this,SLOT(slotSex()));
connect(ageButton,SIGNAL(clicked()),this,SLOT(slotAge()));
connect(statureButton,SIGNAL(clicked()),this,SLOT(slotStature()));
}
void InputDlg::slotName()
{
bool ok;
//getText(1,2,3,4,5,6) 函数弹出标准字符串输入对话框
//第一个参数是标准输入框 的父窗口这里是他本身
//第二个参数是标准输入对话框的标题名
//第三个参数是为标准输入对话框标签提示
//第四个参数是指定标准输入对话框中QLineEdit控件的输入模式
//第五个参数是标准输入框默认出现的字体
//第六个参数ok用来指示哪个按钮被触发,ok为true表示按下,为flase表示取消
QString name = QInputDialog::getText(this,tr("用户名"),
tr("请输入新的名字"),QLineEdit::Normal,namelabel->text(),&ok);
if(ok && !name.isEmpty())//判断ok的值,如果单击确定则把新的姓名输入到对话框
{
namelabel->setText(name);
}
}
void InputDlg::slotSex()
{
QStringList list;//下拉列表
//为列表加入元素
list<< tr("男") << tr("女");
bool ok;
//getItem(1,2,3,4,5,6,7) 函数弹出标准条目选择对话框
//第一个参数是标准输入框 的父窗口这里是他本身
//第二个参数是标准输入对话框的标题名
//第三个参数是为标准输入对话框标签提示
//第四个参数是list,就是上面的可选条目
//第五个参数是默认显示条目
//第六个参数是下拉框中的文字是否可编辑
//第七个参数ok用来指示哪个按钮被触发,ok为true表示按下,为flase表示取消
QString sex = QInputDialog::getItem(this,tr("性别"),"请选择性别",list,0,false,&ok);
if(ok)
{
sexlabel->setText("sex");
}
}
void InputDlg::slotAge()
{
bool ok;
//getInt(1,2,3,4,5,6,7,8) 函数弹出标准int类型输入对话框
//第一个参数是标准输入框 的父窗口这里是他本身
//第二个参数是标准输入对话框的标题名
//第三个参数是为标准输入对话框标签提示
//第四个参数是默认显示条目
//第五六个参数指定QSpinBox控件的数值范围
//第七个参数指定QSpinBox控件的步进值,就是上下箭头点击一次自增值
//第八个参数ok用来指示哪个按钮被触发,ok为true表示按下,为flase表示取消
int age = QInputDialog::getInt(this,tr("用户年龄"),"请输入年龄",
agelabel->text().toInt(),0,150,1,&ok);
if(ok)
agelabel->setText(QString(tr("%1")).arg(age));
}
void InputDlg::slotStature()
{
bool ok;
//getDouble(1,2,3,4,5,6,7,8) 函数弹出标准int类型输入对话框
//第一个参数是标准输入框 的父窗口这里是他本身
//第二个参数是标准输入对话框的标题名
//第三个参数是为标准输入对话框标签提示
//第四个参数是默认显示条目
//第五六个参数指定QSpinBox控件的数值范围,身高范围
//第七个参数指定QSpinBox控件的步进值,就是上下箭头点击一次
//第八个参数ok用来指示哪个按钮被触发,ok为true表示按下,为flase表示取消
double d = QInputDialog::getDouble(this,"身高","请输入身高",175.00,0,230.00,1,&ok);
if(ok)
staturelabel->setText(QString(tr("%1")).arg(d));
}
main.c
#include "mainwindow.h"
#include <QApplication>
#include"inputdialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
InputDlg b;
b.show();
return a.exec();
}