标准输入框

本文详细介绍了Qt库中QInputDialog类的使用方法,包括字符串、整数、浮点数和下拉列表四种类型的输入框。通过实例展示了如何创建并操作这些输入框,获取用户输入,并更新界面上的显示。适用于Qt应用程序开发人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值