QInputDialog是Qt框架提供的一个标准输入对话框类,用于从用户处获取单个值。它可以接收字符串、数字或列表中的一项,并提供一个标签提示用户应当输入什么内容。该类归属于Qt的窗口部件模块,继承自QDialog,提供了getText()、getMultiLineText()、getInt()、getDouble()、getItem()五个静态便捷函数,是Qt应用程序中收集用户简单输入时常用的内置对话框。
定义
QInputDialog是Qt框架中的一个类,用于向用户索取单个输入值。按照官方文档的说明,它提供的是一种简单的便捷对话框,输入的值可以是字符串、数字或者列表中的某一项;使用时必须设置标签文本,以告知用户需要输入的内容。该类继承自QDialog,属于Qt的窗口部件模块,在项目文件中通过QT += widgets引入[1]。
在输入模式上,QInputDialog定义了TextInput、IntInput、DoubleInput三种枚举值,分别对应字符串、整数和双精度浮点数输入;输入模式决定了对话框内部使用哪一种输入部件[1]。此外,InputDialogOption枚举提供了若干影响外观的选项,包括隐藏确定与取消按钮、用QListView代替组合框显示条目、以及使用QPlainTextEdit处理多行文本输入[2]。
原理
QInputDialog的工作方式是通过静态便捷函数一次性完成对话框的构造、显示与取值。调用这类函数时会创建一个模态对话框,函数在对话框关闭后返回用户输入的值;同时可以通过一个布尔指针参数回传用户是否点击了确定按钮,点击确定时该值为true,点击取消时为false[1]。
不同类型的输入在内部对应不同的窗口部件。getText()基于单行文本框QLineEdit,并支持普通、密码等回显模式;getMultiLineText()基于多行纯文本编辑器;getInt()基于整数微调框QSpinBox,可设定最小值、最大值和步长;getDouble()基于双精度微调框,并可指定小数位数;getItem()基于下拉组合框,由字符串列表填充候选条目[3]。
除静态函数外,也可以直接构造QInputDialog实例,通过属性接口控制显示内容与取值范围,例如设置标签文字、输入模式以及当前值。对话框在数值变化和用户确认时会发出相应信号,包括textValueChanged()、intValueSelected()、doubleValueSelected()等;其中open()函数会按槽函数的首个参数类型自动选择要连接的信号[4]。
发展历程
早期版本的Qt提供的整数输入函数名为getInteger(),文档中后来将其标记为已弃用,取而代之的是getInt()。在Python绑定PySide的旧文档中,同时可以查到getInt()与getInteger()两种写法,反映出这一改名过程中的过渡状态。
QInputDialog的大部分属性接口,如输入模式、整数与浮点数的范围、按钮文字、组合框条目的引入时间均为Qt 4.5[1]。多行文本输入的静态函数getMultiLineText()以及使用QPlainTextEdit的选项则出现得更晚,在Qt 5.2中才被加入[1]。
应用
QInputDialog适用于只需要用户提供一个简单值的场合,例如输入用户名、搜索关键词、数量或从若干预设选项中挑选一项。官方文档给出的示例包括用getText()获取用户名、用getInt()输入百分比、用getDouble()输入金额、用getItem()从季节列表中作出选择[4]。
由于这些函数把对话框的创建、执行和结果读取封装在一起,开发者无需自行设计对话框类即可完成一次输入交互,常被用于工具软件、配置界面和调试窗口中的临时参数录入。Qt自带的「标准对话框」示例演示了QInputDialog与QMessageBox等其他内置对话框的用法[2]。该类的Python绑定由PySide提供,在PySide6中以相似的方法签名供调用[5]。
局限
QInputDialog一次只能获取一个值,输入类型受限于文本、整数、浮点数和列表选择这几种,无法直接用于需要同时填写多个字段或复杂校验的表单[1]。
官方文档对静态便捷函数给出了明确警告:在对话框执行期间不应删除其父部件,如果确有这一需求,应当改用构造函数自行创建对话框实例[4]。此外,getInt()在用户取消时返回的是传入的初始值而非提示错误,调用方必须借助ok参数判断结果是否有效;getText()和getMultiLineText()在对话框被拒绝时会返回空字符串,同样需要以ok参数区分取消与空输入[5]。
参见
参考资料
- QInputDialog Class [引用日期2026-10-14]
- QInputDialog Class [引用日期2026-10-14]
- title: QInputDialog [引用日期2026-10-14]
- QInputDialog Class [引用日期2026-10-14]
- 概述 [引用日期2026-10-14]