在Qt中,QInputDialog类中提供了简单的输入对话框用来获得用户的输入信息,目前包含4中数据类型的输入,字符串、Int类型,Double类型、以及下拉列表。
使用方法通过简单的例子说明,
若调用字符串输入框则设置为一个LineEdit,如果是Int、Double类型的输入框,则为一个QspinBox,如果是调用列表 条目输入框,则为一个QComboBox;
使用方法参考:
//输入字符串QlineEdit
void Dialog::slotName()
{
bool ok;
QString name = QInputDialog::getText(this,tr("User anme"),tr("please input new name:"),QLineEdit::Normal,lableName->text(),&ok);
if(ok && !name.isEmpty())
{
lableName->setText(name);
}
}
//调用一个列表条目,QComboBox
void Dialog::slotSex()
{
QStringList list;
bool ok;
list << tr("male")<<tr("female");
QString sex = QInputDialog::getItem(this,tr("Sex"),tr("please input new sex:"),list,0,false,&ok);
if(ok)
{
lableSex->setText(sex);
}
}
//输入Int型,是一个QspinBox
void Dialog::slotAge()
{
bool ok;
//添加一个可以加减的符号
int age = QInputDialog::getInt(this,tr("age"),tr("please input new age:"),lableAge->text().toInt(),0,150,1,&ok);
if(ok)
lableAge->setText(QString("%1").arg(age));
}
void Dialog::slotStature()
{
bool ok;
double stature = QInputDialog::getDouble(this,tr("stature"),tr("please input new stature:"),175.00,0,230.00,1,&ok);
if(ok)
lableStature->setText(QString(tr("%1").arg(stature)));
}
完整代码:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QGridLayout>
#include <QPushButton>
#include <QLabel>
#include <QString>
#include <QInputDialog>
#include <QStringList>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
QGridLayout* layout;
//修改按钮
QPushButton* nameButton;
QPushButton* sexButton;
QPushButton* ageButton;
QPushButton* statureButton;
//标签
QLabel* nameLable;
QLabel* sexLable;
QLabel* ageLable;
QLabel* statureLable;
//提示标签
QLabel* lableName;
QLabel* lableSex;
QLabel* lableAge;
QLabel* lableStature;
private slots:
void slotName();
void slotSex();
void slotAge();
void slotStature();
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
setWindowTitle(tr("input dialog"));
nameLable = new QLabel;
nameLable->setText(tr("姓名:"));
sexLable = new QLabel;
sexLable->setText(tr("性别:"));
ageLable = new QLabel;
ageLable->setText(tr("年龄:"));
statureLable = new QLabel;
statureLable->setText(tr("身高:"));
//创建各个提示标签
lableName = new QLabel(tr("李明"));
lableName->setFrameStyle(QFrame::Panel|QFrame::Sunken);
lableSex = new QLabel(tr("男"));
lableSex->setFrameStyle(QFrame::Panel|QFrame::Sunken);
lableAge = new QLabel(tr("22"));
lableAge->setFrameStyle(QFrame::Panel|QFrame::Sunken);
lableStature = new QLabel;
lableStature->setFrameStyle(QFrame::Panel|QFrame::Sunken);
nameButton = new QPushButton;
nameButton->setText(tr("..."));
sexButton = new QPushButton;
sexButton->setText(tr("..."));
ageButton = new QPushButton;
ageButton->setText(tr("..."));
statureButton = new QPushButton;
statureButton->setText(tr("..."));
layout = new QGridLayout(this);
layout->addWidget(nameLable,0,0);
layout->addWidget(lableName,0,1);
layout->addWidget(nameButton,0,2);
layout->addWidget(sexLable,1,0);
layout->addWidget(lableSex,1,1);
layout->addWidget(sexButton,1,2);
layout->addWidget(ageLable,2,0);
layout->addWidget(lableAge,2,1);
layout->addWidget(ageButton,2,2);
layout->addWidget(statureLable,3,0);
layout->addWidget(lableStature,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()));
}
//输入字符串QlineEdit
void Dialog::slotName()
{
bool ok;
QString name = QInputDialog::getText(this,tr("User anme"),tr("please input new name:"),QLineEdit::Normal,lableName->text(),&ok);
if(ok && !name.isEmpty())
{
lableName->setText(name);
}
}
//调用一个列表条目,QComboBox
void Dialog::slotSex()
{
QStringList list;
bool ok;
list << tr("male")<<tr("female");
QString sex = QInputDialog::getItem(this,tr("Sex"),tr("please input new sex:"),list,0,false,&ok);
if(ok)
{
lableSex->setText(sex);
}
}
//输入Int型,是一个QspinBox
void Dialog::slotAge()
{
bool ok;
//添加一个可以加减的符号
int age = QInputDialog::getInt(this,tr("age"),tr("please input new age:"),lableAge->text().toInt(),0,150,1,&ok);
if(ok)
lableAge->setText(QString("%1").arg(age));
}
void Dialog::slotStature()
{
bool ok;
double stature = QInputDialog::getDouble(this,tr("stature"),tr("please input new stature:"),175.00,0,230.00,1,&ok);
if(ok)
lableStature->setText(QString(tr("%1").arg(stature)));
}
Dialog::~Dialog()
{
delete ui;
}