标准输入框

在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;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值