Qt之输入对话框(QInputDialog)的相关参数(Qt::InputMethodHints)和(QLineEdit::EchoMode)学习

本文参考文章
Qt 编程 —— 输入对话框(QInputDialog)的使用 【学习笔记】

前言

QInputDialog类提供了一个简单的便捷对话框,可以从用户那里获取用户录入的单个值。当前Qt提供了五个静态接口函数用于获取常用的数据类型参数:

//单文本输入框
QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()
//int类型的接口
int 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())
//double类型的接口
double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), double step = 1)
//下拉选择框,单选框获取选中的某一列
QString getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
//多文本输入框
QString getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)

文本框样式 QLineEdit::EchoMode

类型详细解释
QLineEdit::Normal默认设置,输入时显示字符。
QLineEdit::NoEcho不要显示任何内容。这可能适用于密码,即使密码的长度也应保密。
QLineEdit::Password显示与平台相关的密码掩码字符,而不是实际输入的字符。
(例如输入123456实际显示******)
QLineEdit::PasswordEchoOnEdit编辑时按输入显示字符,否则按密码显示字符。

输入模式提示Qt::InputMethodHints

类型详细解释
Qt::ImhNone不配置,系统默认
Qt::ImhHiddenText输入法不应在键入时显示字符。将QLineEdit::echoMode设置为密码时,会自动设置此选项。请注意,设置ImhHiddenText不会更改回声模式
Qt::Qt::ImhSensitiveData键入的文本不应该由活动输入法存储在任何持久性存储中,如预测用户词典。
(英文键盘,输入内容没有下划线,有输入提示)
Qt::ImhNoAutoUppercase当句子结束时,输入法不应尝试自动切换到大写。
(英文键盘,输入内容没有下划线,有输入提示)
Qt::ImhPreferNumbers首选数字(但不是必需的)。
(键盘中只有数字0-9,删除和回车)
Qt::ImhPreferUppercase首选大写字母(但不是必需的)。
(数字+英文全键盘,shift键默认按下,高亮,数字显示不受影响)
Qt::ImhPreferLowercase首选小写字母(但不是必需的)。
(数字+英文全键盘,shift不按下)
Qt::ImhNoPredictiveText键入时不要使用预想文本(即字典查找)。
(键盘:0-9,-/:,.回车,空格,删除)
Qt::ImhDate文本编辑器用作日期字段。
(日期间盘:数字0—9,.-/)
Qt::ImhTime文本编辑器用作时间字段。
(时间键盘:数字0-9,:)
Qt::ImhPreferLatin首选拉丁字符(但不是必需的)。
(英文键盘,带有输入提示,如输入g,提示going,带下划线,需回车确认输入)
Qt::ImhMultiLine可以在文本字段中输入多行。
(英文键盘,带有输入提示,如输入g,提示going,带下划线,需回车确认输入)
Qt::ImhNoEditMenu不要使用内置的编辑菜单。此标志在Qt 5.11中引入。

案例


QLineEdit::Normal,Qt::ImhNone

QInputDialog *inputDialog = new QInputDialog(this);
bool getInfo;
QString down = inputDialog->getText(this,"输入下降量","请输入下降量",QLineEdit::Normal,"",&getInfo,Qt::WindowFlags(0),Qt::ImhNone);
    if(getInfo){
        s = s.append(down);
        Send(s);
    }

运行截图:
在这里插入图片描述


QLineEdit::Password

QInputDialog *inputDialog = new QInputDialog(this);
bool getInfo;
QString down = inputDialog->getText(this,"输入下降量","请输入下降量",QLineEdit::Password,"",&getInfo,Qt::WindowFlags(0),Qt::ImhHiddenText);
    if(getInfo){
        s = s.append(down);
        Send(s);
    }

在使用QLineEdit::Password时,自动调用了Qt::ImhHiddenText,此时Qt::InputMethodHints位置可默认不填

修改后的代码如下:

QInputDialog *inputDialog = new QInputDialog(this);
bool getInfo;
QString down = inputDialog->getText(this,"输入下降量","请输入下降量",QLineEdit::Password,"",&getInfo,Qt::WindowFlags(0));
    if(getInfo){
        s = s.append(down);
        Send(s);
    }

运行截图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值