输入类控件
- 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 , 因此⽤法上基本相同.



