输入类控件
- QLineEdit
- QTextEdit
- QComboBox
- QSpinBox
- QDateTimeEdit
- QDial
- QSlider
QLineEdit
QLineEdit用来表示单行输入框,可以输入一段文本,但是不能换行;
核心属性:
| 属性 | 说明 | 
|---|---|
| text | 输入框中的文本 | 
| inputMask | 输入内容格式约束 | 
| maxLength | 最大长度 | 
| frame | 是否添加边框 | 
| echoMode | 显示方式: 1. QLineEdit::Normal: 这是默认值,文本框会显示输入的文本。2. QLineEdit::Password: 这种模式下,输入的字符会被隐藏,通常使用(*)或(=)来替换 3. QLineEdit::NoEcho: 这种模式下,文本框不会回显任何输入的字符 | 
| cursorPosition | 光标所在位置 | 
| alignment | 文字对齐方式,设置水平和垂直方式的对齐 | 
| dragEnabled | 是否允许拖拽 | 
| readOnly | 是否是只读的(不允许修改) | 
| placeHolderText | 当输入框内容为空的时候,显示什么样子的提示信息 | 
| clearButtonEnabled | 是否会自动显示出“清除按钮” | 
核心信号:
| 信号 | 说明 | 
|---|---|
| void cursorPositionChanged(int old, int new) | 当鼠标移动时发出信号,old为先前的位置,new为新位置 | 
| void editingFinished() | 当按返或回车键时,或者行编辑失去焦点时,发出此信号 | 
| void returnPressed() | 当返回或回车键按下时触发该信号,如果设置了验证器,那么必须通过验证,才能触发 | 
| void selectionChanged() | 当选中的⽂本改变时,发出此信号 | 
| void textChanged(const QString &text) | 当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改能够触发这个信号. | 
| void textEdited(const QString &text)) | 当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改不能触发这个信号. | 
eg1: 使用QLineEdit控件来录入用户信息,并且将用户信息打印在控制台:
当我们点击确认的时候,就能够在控制台打印接收到的消息
核心代码:
运行结果:
eg2:使用验证器来对输入的内容进行验证,当验证通过时,则将提交按钮设置为可点击,反之则将提交按钮设置为不可点击;
 设计思路:
 当输入框中的内容发生变化的时候,QLineEdit会发出textEdited信号,并且这个信号还会携带上此时输入框中的内容,此时我们可以捕捉这个信号,然后在对应的槽函数中使用验证器来对输入框中的内容进行验证,验证通过则将提交按钮设置为可用状态,否则则将提交按钮设置为禁用状态;
 这个验证器Qt,主要有以下几种:
 
 针对于验证器,我们可以将这个验证器设置进QLineEdit然后进行使用,也可以每次捕捉textEdited信号的时候创建出来使用,这里我们选择第一种做法;
 核心代码如下:
 
 运行结果:
 
eg3:验证两次输入的密码一致
 核心代码:
 
 
 eg4: 切换显示密码
 
 核心代码:
 
 
QTextEdit
QTextEdit表示多行输入框,也是一个富文本编辑器,并且能够在内容超范围时自动提供滚动条;
核心属性:
| 属性 | 说明 | 
|---|---|
| markdown | 输⼊框内持有的内容. ⽀持 markdown 格式. 能够⾃动的对markdown ⽂本进⾏渲染成 html | 
| html | 输⼊框内持有的内容. 可以⽀持⼤部分 html 标签. 包括 img 和 table 等. | 
| placeHolderText | 输⼊框为空时提⽰的内容. | 
| readOnly | 是否是只读的 | 
| undoRedoEnable | 是否开启 undo / redo 功能.按下 ctrl + z 触发 undo;按下 ctrl + y 触发 redo | 
| autoFormating | 开启⾃动格式化 | 
| tabstopWidth | 按下缩进占多少空间 | 
| overwriteMode | 是否开启覆盖写模式 | 
| acceptRichText | 是否接收富⽂本内容 | 
| verticalScrollBarPolicy | 垂直⽅向滚动条的出现策略•Qt::ScrollBarAsNeeded : 根据内容⾃动决定是否需要滚动条。这是默认值。•Qt::ScrollBarAlwaysOff : 总是关闭滚动条。•Qt::ScrollBarAlwaysOn : 总是显⽰滚动条。 | 
| horizontalScrollBarPolicy | ⽔平⽅向滚动条的出现策略•Qt::ScrollBarAsNeeded : 根据内容⾃动决定是否需要滚动条。这是默认值。•Qt::ScrollBarAlwaysOff : 总是关闭滚动条。•Qt::ScrollBarAlwaysOn : 总是显⽰滚动条。 | 
核心信号
| 信号 | 说明 | 
|---|---|
| textChanged() | ⽂本内容改变时触发 | 
| selectionChanged() | 选中范围改变时触发 | 
| cursorPositionChanged() | 光标移动时触发 | 
| undoAvailable(bool) | 可以进⾏ undo 操作时触发 | 
| redoAvailable(bool) | 可以进⾏ redo 操作时触发 | 
| copyAvaiable(bool) | ⽂本被选中/取消选中时触发 | 
eg1:获取多行输入框的内容
 
核心代码:
 
 运行结果
 
 eg2:验证输入框的各种信号
 
QComboBox
QComboBox表示下拉框;
核心属性:
| 属性 | 说明 | 
|---|---|
| currentText | 当前选中的⽂本 | 
| currentIndex | 当前选中的条⽬下标.从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1 | 
| editable | 是否允许修改,设为 true 时, QComboBox 的⾏为就⾮常接近 QLineEdit , 也可以设置 validator | 
| iconSize | 下拉框图标 (⼩三⻆) 的⼤⼩ | 
| maxCount | 最多允许有多少个条⽬ | 
核心信号:
| 信号 | 说明 | 
|---|---|
| activated(int) | 当⽤⼾选择了⼀个选项时发出. | 
| activated(const QString & text) | 当⽤⼾选择了⼀个选项时发出 | 
| currentIndexChanged(int) | 当前选项改变时发出. | 
| currentIndexChanged(const QString & text) | 当前选项改变时发出 | 
| editTextChanged(const QString & text) | 当编辑框中的⽂本改变时发出(editable 为 true 时有效) | 
eg1: 使用下拉框模拟麦当劳点餐
 
核心代码:
 
 运行结果:
 
 eg2:从⽂件中加载下拉框的选项
 
 设计图:
 
 核心代码:
 
运行结果:
 
QSpinBox
使⽤ QSpinBox 或者 QDoubleSpinBox 表⽰ “微调框”, 它是带有按钮的输⼊框. 可以⽤来输⼊整
数/浮点数. 通过点击按钮来修改数值⼤⼩.
核心属性
| 属性 | 说明 | 
|---|---|
| value | 存储的数值. | 
| singleStep | 每次调整的 “步⻓”. 按下⼀次按钮数据变化多少. | 
| displayInteger | 数字的进制. 例如 displayInteger 设为 10, 则是按照 10 进制表⽰. 设为 2 则为 2进制表⽰. | 
| minimum | 最⼩值 | 
| maximum | 最⼤值 | 
| suffix | 后缀 | 
| prefix | 前缀 | 
| wrapping | 是否允许换⾏ | 
| frame | 是否带边框 | 
| alignment | ⽂字对⻬⽅式. | 
| readOnly | 是否允许修改 | 
| buttonSymbol | 按钮上的图标.UpDownArrows 上下箭头形式;PlusMinus 加减号形式;NoButtons 没有按钮 | 
| accelerated (加速的) | 按下按钮时是否为快速调整模式 | 
| correctionMode | 输⼊有误时如何修正.QAbstractSpinBox::CorrectToPreviousValue : 如果⽤⼾输⼊了⼀个⽆效的值(例如,在只能显⽰正整数的SpinBox中输⼊了负数),那么SpinBox会恢复为上⼀个有效值。例如,如果SpinBox的初始值是1,⽤⼾输⼊了-1(⽆效),然后SpinBox会恢复为1。QAbstractSpinBox::CorrectToNearestValue : 如果⽤⼾输⼊了⼀个⽆效的值,SpinBox会恢复为最接近的有效值。例如,如果SpinBox的初始值是1,⽤⼾输⼊了-1(⽆效),那么SpinBox会恢复为0。 | 
| keyboardTrack | 是否开启键盘跟踪.设为 true, 每次在输⼊框输⼊⼀个数字, 都会触发⼀次 valueChanged() 和textChanged() 信号.设为 false, 只有在最终按下 enter 或者输⼊框失去焦点, 才会触发valueChanged() 和 textChanged() 信号. | 
核心信号
| 信号 | 说明 | 
|---|---|
| textChanged(QString) | 微调框的⽂本发⽣改变时会触发.参数 QString 带有 前缀 和 后缀. | 
| valueChanged(int) | 微调框的⽂本发⽣改变时会触发.参数 int, 表⽰当前的数值. | 
eg1:调整⻨当劳购物⻋中的份数.
 设计图纸:
 
 核心代码:
 
 运行结果:
 
QDateTimeEdit

核心属性:
| 属性 | 说明 | 
|---|---|
| dateTime | 时间⽇期的值. 形如 2000/1/1 0:00:00 | 
| date | 单纯⽇期的值. 形如 2001/1/1 | 
| time | 单纯时间的值. 形如 0:00:00 | 
| displayFormat | 时间⽇期格式. 形如 yyyy/M/d H:mm; y 表⽰年份; M 表⽰⽉份; d 表⽰⽇期; H 表⽰⼩时; m 表⽰分钟; s 表⽰秒 | 
| minimumDateTime | 最⼩时间⽇期 | 
| maximumDateTime | 最⼤时间⽇期 | 
| timeSpec | Qt::LocalTime :显⽰本地时间。Qt::UTC :显⽰协调世界时(UTC)。Qt::OffsetFromUTC :显⽰相对于UTC的偏移量(时差). | 
核心信号:
| 信号 | 说明 | 
|---|---|
| dateChanged(QDate) | ⽇期改变时触发. | 
| timeChanged(QTime) | 时间改变时触发. | 
| dateTimeChanged(QDateTime) | 时间⽇期任意⼀个改变时触发. | 
eg1:编写一个日期计算器
 
核心代码:
 
 运行结果:
 
QDial
旋纽
核心属性:
| 属性 | 说明 | 
|---|---|
| value | 持有的数值. | 
| minimum | 最⼩值 | 
| maximum | 最⼤值 | 
| singleStep | 按下⽅向键的时候改变的步⻓. | 
| pageStep | 按下 pageUp / pageDown 的时候改变的步⻓. | 
| sliderPosition | 界⾯上旋钮显⽰的 初始位置 | 
| tracking | 外观是否会跟踪数值变化.默认值为 true. ⼀般不需要修改. | 
| wrapping | 是否允许循环调整.即数值如果超过最⼤值, 是否允许回到最⼩值.(调整过程能否 “套圈”) | 
| notchesVisible | 是否显⽰ 刻度线 | 
| notchTarget | 刻度线之间的相对位置.数字越⼤, 刻度线越稀疏. | 
核心信号:
| 信号 | 说明 | 
|---|---|
| valueChanged(int) | 数值改变时触发 | 
| rangeChanged(int, int) | 范围变化时触发 | 
eg1:通过旋钮来控制窗口透明度

核心代码:

 运行结果:
 
QSlider
QSlider 表⽰⼀个滑动条.
QSlider 和 QDial 都是继承⾃ QAbstractSlider , 因此⽤法上基本相同.



