QInputDialog类提供了从用户那里得到一个单一值的简单方便的对话框。
#include <qinputdialog.h>
继承了QDialog。
所有成员函数的列表。
输入值可以是字符串、数字或者列表中的一项。必须设置标签来告诉用户应该输入什么。
这里有四个方便的函数被提供:getText()、getInteger()、getDouble()和getItem()。所有这些函数都可以按相似的方式使用,例如:
bool ok = FALSE; QString text = QInputDialog::getText( tr( "Application name" ), tr( "Please enter your name" ), QLineEdit::Normal, QString::null, &ok, this ); if ( ok && !text.isEmpty() ) ;// 用户输入一些东西并且按下OK else ;// 用户不输入任何东西或者按下Cancel
也可以参考对话框类。
对话框的父对象为parent、名称为name。如果ok参数为非零,则如果用户点击OK,*ok被设置为真,并且如果用户点击Cancel,就被设置为假。对话框将是模式的。
这个函数返回用户输入的浮点数。
像这样使用这个静态函数:
bool ok = FALSE; double res = QInputDialog::getDouble( tr( "Application name" ), tr( "Please enter a decimal number" ), 33.7, 0, 1000, 2, &ok, this ); if ( ok ) ;// 用户输入一些东西并且按下OK else ;// 用户按下Cancel
对话框的父对象为parent、名称为name。如果ok参数为非零,则如果用户点击OK,*ok被设置为真,并且如果用户点击Cancel,就被设置为假。对话框将是模式的。
这个函数返回用户输入的整数。
像这样使用这个静态函数:
bool ok = FALSE; int res = QInputDialog::getInteger( tr( "Application name" ), tr( "Please enter a number" ), 22, 0, 1000, 2, &ok, this ); if ( ok ) ;// 用户输入一些东西并且按下OK else ;// 用户按下Cancel
对话框的父对象为parent、名称为name。如果ok参数为非零,则如果用户点击OK,*ok被设置为真,并且如果用户点击Cancel,就被设置为假。对话框将是模式的。
这个函数返回当前项的文本,或者如果editable为真,就是组合框的当前文本。
像这样使用这个静态函数:
QStringList lst; lst << "First" << "Second" << "Third" << "Fourth" << "Fifth"; bool ok = FALSE; QString res = QInputDialog::getItem( tr( "Application name" ), tr( "Please select an item" ), lst, 1, TRUE, &ok, this ); if ( ok ) ;// 用户选择一项并且按下OK else ;// 用户按下Cancel
对话框的父对象为parent、名称为name。如果ok参数为非零,则如果用户点击OK,*ok被设置为真,并且如果用户点击Cancel,就被设置为假。对话框将是模式的。
这个函数返回用户在行编辑中输入的文本。如果没有输入,就返回空字符串。
像这样使用这个静态函数:
bool ok = FALSE; QString text = QInputDialog::getText( tr( "Application name" ), tr( "Please enter your name" ), QLineEdit::Normal, QString::null, &ok, this ); if ( ok && !text.isEmpty() ) ;// 用户输入一些东西并且按下OK else ;// 用户不输入任何东西或者按下Cancel
inputdialog.h
#ifndef INPUTDIALOG_H #define INPUTDIALOG_H #include <QApplication> #include <QPushButton> #include <QDialog> #include <QGridLayout> #include <QWidget> #include <QHBoxLayout> #include <QLabel> #include <QLineEdit> #include <QComboBox> #include <QDialogButtonBox> #include <QGridLayout> #include <QDialog> #include <QtGui> namespace Ui { class InputDialog; } class InputDialog : public QDialog { Q_OBJECT public: explicit InputDialog(QWidget *parent = 0); ~InputDialog(); 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: Ui::InputDialog *ui; private slots: void slotName(); void slotSex(); void slotAge(); void slotStature(); }; #endif // INPUTDIALOG_H
#include "inputdialog.h" #include "ui_inputdialog.h" InputDialog::InputDialog(QWidget *parent) : QDialog(parent), ui(new Ui::InputDialog) { setWindowTitle(tr("Input Dialog")); //创建各种标签对象 label1=new QLabel(tr("Name")); label2=new QLabel(tr("Sex")); label3=new QLabel(tr("Age")); label4=new QLabel(tr("Stature")); //创建各种显示标签 nameLabel=new QLabel(tr("LiMing")); sexLabel=new QLabel(tr("F")); ageLabel=new QLabel(tr("12")); statureLabel=new QLabel(tr("123")); //创建各种修改按钮 nameButton=new QPushButton(tr("Modify")); sexButton=new QPushButton(tr("Modify")); ageButton=new QPushButton(tr("Modify")); statureButton=new QPushButton(tr("Modify")); //布局管理 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); setLayout(layout); //信号处理 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())); } InputDialog::~InputDialog() { delete ui; } void InputDialog::slotAge() { bool ok; int age=QInputDialog::getInteger(this,tr("User Age"),tr("Please input your age"),ageLabel->text().toInt(),0,100,1,&ok); if (ok) { ageLabel->setText(QString(tr("%1")).arg(age));//QString::arg()函数用第一个arg()调用会替换“%1”,第2个arg()调用会替换“%2”。上面的 } } void InputDialog::slotSex() { QStringList list; list<<tr("male")<<tr("female"); bool ok; QString sex=QInputDialog::getItem(this,tr("Sex"),tr("Please select your sex"),list,0,false,&ok); if(ok) { sexLabel->setText(sex); } } void InputDialog::slotName() { bool ok; QString name=QInputDialog::getText(this,tr("User Name"),tr("Input your name"),QLineEdit::Normal,nameLabel->text(),&ok); if(ok&& !name.isEmpty()) { nameLabel->setText(name); } } void InputDialog::slotStature() { bool ok; double d=QInputDialog::getDouble(this,tr("User Stature"),tr("please input your stature"),170.00,0,200,2,&ok); if(ok) { statureLabel->setText(QString(tr("%1")).arg(d)); } }
#include <QApplication> #include "inputdialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); InputDialog w; w.show(); return a.exec(); }