Qt 使用QInputDialog弹出输入框获取用户输入数据

QInputDialog 经过更高的聚合封装,使得在使用时,变得更简单。

如果直接采用 QWidget来实现,则需要更多的语句,或操作。

//只需要包含这个头文件即可。不需要自己另行构建 ui输入界面;简单方便。

#include <QInputDialog>

简要说明

在开发Qt程序的过程中,我们可能会需要在程序中弹出输入框,并且获取用户输入的数据。一种比较麻烦的做法就是新建一个对话框类,然后在主界面中调用对话框类,获取返回值。
使用QInputDialog对话框类可以通过访问不同的接口函数,弹出输入对话框,获取多种类型的返回数据:

函数                       功能
getText                  获取字符串输入
getMultiLineText    获取多行字符输入
getItem                  弹出下拉框,返回所选数据
getInt                  获取int类型输入
getDouble             获取double类型输入

[static] int QInputDialog::getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())


示例

通过模拟输入个人的姓名,性别,年龄,体重,个人简介,可以演示所有函数的调用方法。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


代码部分

void MainWindow::on_Btn_SetName_clicked()
{
    bool bOk = false;
    QString sName = QInputDialog::getText(this,
                                         "QInputdialog_Name",
                                         "请输入姓名",
                                         QLineEdit::Normal,
                                         "张三",
                                         &bOk
                                         );

    if (bOk && !sName.isEmpty()) {
        ui->label_Name->setText(sName);
    }
}

void MainWindow::on_Btn_SetGender_clicked()
{
    bool bOk = false;
    QStringList tLi;
    tLi << "男" << "女";
    QString sGender = QInputDialog::getItem(this,
                                            "QInputDialog_Gender",
                                            "请选择性别",
                                            tLi,
                                            0,
                                            false,
                                            &bOk);

    if (bOk && !sGender.isEmpty()) {
        ui->label_Gender->setText(sGender);
    }
}

void MainWindow::on_Btn_SetAge_clicked()
{
    bool bOk = false;
    int iAge = QInputDialog::getInt(this,
                                    "QInputDialog_Age",
                                    "请输入年龄",
                                    20,				//默认值
                                    0,				//最小值
                                    100,			//最大值
                                    5,				//步进
                                    &bOk);

    if (bOk && iAge >= 0) {
        ui->label_Age->setText(QString::number(iAge));
    }
}

void MainWindow::on_Btn_SetWeight_clicked()
{
    bool bOk = false;
    double dbWeight = QInputDialog::getDouble(this,
                                              "QInputDialog_Weight",
                                              "请输入体重",
                                              60.01,		//默认值
                                              3.01,			//最小值
                                              1000.00,		//最大值
                                              2,			//精确到小数点后几位
                                              &bOk);

    if (bOk && dbWeight > 3.0) {
        ui->label_Weight->setText(QString::number(dbWeight, 10, 2));
    }
}

void MainWindow::on_Btn_SetIntro_clicked()
{
    bool bOk = false;
    QString sIntroduction = QInputDialog::getMultiLineText(this,
                                                           "QInputDialog_Intro",
                                                           "请输入自我介绍",
                                                           "这个人很懒,什么也不想说",
                                                           &bOk
                                                           );

    if (bOk && !sIntroduction.isEmpty()) {
        ui->text_Introduction->setText(sIntroduction);
    }
}

函数原型

	// 获取字符串
    static QString getText(QWidget *parent, const QString &title, const QString &label,
                           QLineEdit::EchoMode echo = QLineEdit::Normal,
                           const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = 0,
                           Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
    //获取多行字符输入
    static QString getMultiLineText(QWidget *parent, const QString &title, const QString &label,
                           const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = 0,
                           Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
    //弹出下拉框,返回选择数据
    static QString getItem(QWidget *parent, const QString &title, const QString &label,
                           const QStringList &items, int current = 0, bool editable = true,
                           bool *ok = 0, Qt::WindowFlags flags = 0,
                           Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
	//获取int类型数据
    static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0,
                      int minValue = -2147483647, int maxValue = 2147483647,
                      int step = 1, bool *ok = 0, Qt::WindowFlags flags = 0);
    //获取double类型数据
    static double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0,
                            double minValue = -2147483647, double maxValue = 2147483647,
                            int decimals = 1, bool *ok = 0, Qt::WindowFlags flags = 0);

————————————————
版权声明:本文为CSDN博主「Cqy_Chaos」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cqysmyg_1/article/details/103938268

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值