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