QT学习 之 对话框 (二) 标准输入框

QInputDialog类参考

QInputDialog类提供了从用户那里得到一个单一值的简单方便的对话框。 

#include <qinputdialog.h>

继承了QDialog。

所有成员函数的列表。

静态公有成员

  • QString  getText ( const QString & caption, const QString & label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString & text = QString::null, bool * ok = 0, QWidget * parent = 0, const char * name = 0 )
  • int  getInteger ( const QString & caption, const QString & label, int num = 0, int from = -2147483647, int to = 2147483647, int step = 1, bool * ok = 0, QWidget * parent = 0, const char * name = 0 )
  • double  getDouble ( const QString & caption, const QString & label, double num = 0, double from = -2147483647, double to = 2147483647, int decimals = 1, bool * ok = 0, QWidget * parent = 0, const char * name = 0 )
  • QString  getItem ( const QString & caption, const QString & label, const QStringList & list, int current = 0, bool editable = TRUE, bool * ok = 0, QWidget * parent = 0, const char * name = 0 )

详细描述

QInputDialog类提供了从用户那里得到一个单一值的简单方便的对话框。

输入值可以是字符串、数字或者列表中的一项。必须设置标签来告诉用户应该输入什么。

这里有四个方便的函数被提供: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
  

QT学习 之 对话框 (二) 标准输入框_第1张图片

也可以参考对话框类。

成员函数文档

double QInputDialog::getDouble ( const QString & caption, const QString & label, double num = 0, double from = -2147483647, double to = 2147483647, int decimals = 1, bool * ok = 0, QWidget * parent = 0, const char * name = 0 ) [静态]

从用户那里得到浮点数的静态方便函数。 caption 是这个对话框在标题栏显示的文本。 label 是显示给用户的文本(它应该告诉用户应该输入什么)。 num 是这个行编辑中所要设置的默认的浮点数值。 from to 是最小值和最大值,用户应该在这个范围内进行选择并且 decimals 小数点后面小数的最大位数。

对话框的父对象为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
  

int QInputDialog::getInteger ( const QString & caption, const QString & label, int num = 0, int from = -2147483647, int to = 2147483647, int step = 1, bool * ok = 0, QWidget * parent = 0, const char * name = 0 ) [静态]

从用户那里得到整数的静态方便函数。 caption 是这个对话框在标题栏显示的文本。 label 是显示给用户的文本(它应该告诉用户应该输入什么)。 num 是微调框中所要设置的默认整数。 from to 是最小值和最大值,用户应该在这个范围内进行选择并且 step 是用户通过点击上下箭头增加或者减少的数值。

对话框的父对象为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
  

QString QInputDialog::getItem ( const QString & caption, const QString & label, const QStringList & list, int current = 0, bool editable = TRUE, bool * ok = 0, QWidget * parent = 0, const char * name = 0 ) [静态]

让用户从一个字符串列表中选择一项的静态方便函数。 caption 是这个对话框在标题栏显示的文本。 label 是显示给用户的文本(它应该告诉用户应该输入什么)。 list 是插入到组合框中的字符串列表,并且 current 是指哪一项为当前项。如果 editable 为真,则用户可以输入自己的文本,如果 editable 为假,则用户只能选择已有的项中的一项。

对话框的父对象为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
  

QString QInputDialog::getText ( const QString & caption, const QString & label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString & text = QString::null, bool * ok = 0, QWidget * parent = 0, const char * name = 0 ) [静态]

从用户那里得到一个字符串的静态方便函数。 caption 是这个对话框在标题栏显示的文本。 label 是显示给用户的文本(它应该告诉用户应该输入什么)。 text 是放置在行编辑中的默认文本。 mode 是行编辑的回显模式。

对话框的父对象为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

inputdialog.cpp


#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));
    }
}

main.cpp

#include <QApplication>
#include "inputdialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    InputDialog w;
    w.show();
    
    return a.exec();
}





你可能感兴趣的:(QT学习 之 对话框 (二) 标准输入框)