Qt开发总结(11)——控件之输入控件

时间:2024-03-19 11:41:02

Qt输入控件由各类box和edit组成。具体包括:

控件名

对应类名

描述

下拉列表

QComboBox/QFontComboBox

提供下拉列表供用户选择

单行文本编辑框

QLineEdit

单行可输入文本编辑

多行文本编辑框

QTextEdit/QPlainTextEdit

多行可输入文本编辑

数值输入框

QSpinBox

用于整数的显示和输入

数值输入框

QDoubleSpinBox

用于浮点数的显示和输入

时间日期选择控件

QTimeEdit/QDateEdit/QDateTimeEdit

时间和日期选择和显示

表盘

QDial

表盘式数值输入

滚动条

QSlider

通过滑动设置数值

卷滚条

QScrollBar

同QSlider类似,可以作用于卷滚区域

下拉菜单

下拉菜单包括QComboBox/QFontComboBox两种。前者是通用的下拉菜单,后者是字体选择的下拉菜单,类似于word中的字体选择框。

Qt开发总结(11)——控件之输入控件

QComboBox 提供一个下拉列表供用户选择,显示当前选择的项,也可以pop up所有可选择的项。combobox也可以被编辑,允许用户编辑下拉列表中的项。下拉列表中既可以包含图片也可以包含文字。insertItem() 和 setItemText()函数可以对上述对象进行自适应调用。对于可编辑的combobox, clearEditText()函数可以清除显示的内容但并不改变下拉列表的实际内容。

combobox内容变化将触发两个信号:currentIndexChanged() 和 activated()。currentIndexChanged() 通常被触发忽略变化是否被程序或者用户完成,而activated()仅在用户完成时触发。而且,前者传递当前索引号,后者传递当前项的文字。 highlighted() 信号是在用户高亮下拉列表中的项时触发. 只要可编辑的combobox文件发生改变则会触发editTextChanged()信号。当用户输入了一个新的字符串,combobox将可能会插入列表中。默认会插入最低下,但是可以通过setInsertPolicy()设置插入的位置。

用insertItem() 和 insertItems()插入项,用setItemText()改变项的内容。用 removeItem()删除某个项,用clear()清除所有项。用 currentText()获取当前项的内容, 用setCurrentIndex()设置当前项的目录。用count()获取项的数量。用setMaxCount()设置项的数量上限。 用setEditable()设置可编辑。

QComboBox使用model/view framework显示和保存列表. model/view framework技术将在后续总结中介绍。

文本编辑框

文本编辑框主要包括QLineEdit,QTextEdit和QPlainTextEdit。

QLineEdit是单行文本编辑器。

Qt开发总结(11)——控件之输入控件

line edit可以让用户输入单行文本,并支持重复,撤销,剪切和粘贴等常见编辑功能。通过改变echoMode(),可以设置其为只写模式,如密码输入框。

可以通过maxLength()限制文本的最大长度,用setText() 或者 insert()改变内容。用text()获取内容。用setSelection() 或者 selectAll()选中文本,选中的文本可以被cut(), copy()和 paste(). 通过setAlignment()设置文本对齐方式。

当文本发生变化时,将触发 textChanged()信号。鼠标移动 cursorPositionChanged()信号被触发。返回或者enter按键按下,returnPressed() 信号被触发。当输入完成,或者失去focus,或者按下了 Return/Enter按钮,editingFinished()信号被触发。

QTextEdit是一个所见即所得的可以编辑带格式文本的文本编辑器,以HTML格式标记符定义格式。它可以显示大量文本并且具有快速响应输入的优点。

QTextEdit处理段落和字符。段落是一个格式化的字符串,并被包装为适应控件的宽度。默认情况下,当读取纯文本时,一个换行符表示一个段落。文档由0个或多个段落组成。段落中的字符根据段落的对齐方式对齐。段落中的字符都有自己的属性,比如字体和颜色。

另外,QTextEdit还可以显示图像、列表和表格。如果显示的内容太大而超过了edit的可视区域,则会出现scroll bars. 如果你只想显示一小段文字,建议使用QLabel。所以,QTextEdit不仅具有输入控件的功能,同时也具有显示控件的功能。

可以用setHtml()函数设置文本,它将用其传递的参数替换原有文本。删除文本可以用clear()函数。文本本身的插入可以用QTextCursor类的功能,或者用insertHtml(), insertPlainText(), append()或者paste()函数。QTextCursor支持插入表格和列表等复杂内容,该类还具有文本选中操作等功能。find()函数用以寻找和选择某一字符串。setFontItalic(), setFontWeight(), setFontUnderline(), setFontFamily(), setFontPointSize(), setTextColor() 和 setCurrentFont()用以设置字符属性,setAlignment()用以设置文本对其方式。QTextEdit还有一个QTextDocument对象,可以使用文档的功能。用document()来返回该对象,进而进行编辑。也可以用setDocument()设置该对象。当文本发生变化时会驱动textChanged()信号。

这里附一个LineEdit的例子,大家可以移步本人下载频道下载:LineEditExample

Qt开发总结(11)——控件之输入控件

时间日期

时间日期输入控件包括QTimeEdit/QDateEdit/QDateTimeEdit。

Qt开发总结(11)——控件之输入控件

 

顾名思义,它是一个可以编辑或显示时间和日期的控件。QTimeEdit和QDateEdit是QDateTimeEdit的派生类,前者只用于时间,后者只用于日期。

QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate());

dateEdit->setMinimumDate(QDate::currentDate().addDays(-365));

dateEdit->setMaximumDate(QDate::currentDate().addDays(365));

dateEdit->setDisplayFormat("yyyy.MM.dd");

上述代码将新建一个用今天日期初始化的QDateTimeEdit对象。并指定了有效日期范围为去年到明年,显示格式为yyyy.MM.dd。QDateTimeEdit最小的时间是1752年9月14 日,也可以用setMinimumDate()修改它,QDate的最小值为公元前4713年1月2 日。

QDateTimeEdit可以用QCalendarWidget设置日期,setCalendarWidget()函数可以用于设置关联的QCalendarWidget。

数值输入

数值输入控件有QSpinBox和QDoubleSpinBox。后者支持double类型数值。

Qt开发总结(11)——控件之输入控件

 

QSpinBox除了可以直接输入数值以外,还支持点击右侧的三角按钮来增加或减小数值。每一次的数值改变都会触发两个valueChanged()信号,一个是int形参一个是QString形参。通过setMinimum(), setMaximum() 和 setSingleStep()来设置最小值最大值和递增值。

这里附一个spinbox的例子,大家可以移步本人下载频道下载:SpinBoxExample

Qt开发总结(11)——控件之输入控件

滑块

Slider滑块控件包括QDial、QSlider、QScrollBar等。它们的共同点是通过拖动控件以控制不同的数值,前提是数值已经有一定的范围。

这三个类都继承于QAbstractSlider,所以他们几乎具有相同的signals, slots 和 成员函数。

 

Qt开发总结(11)——控件之输入控件
QDial
Qt开发总结(11)——控件之输入控件
QSlider
Qt开发总结(11)——控件之输入控件
QScrollBar

 

 

Signal

Description

valueChanged()

Emitted when the slider's value has changed. The tracking() determines whether this signal is emitted during user interaction.

sliderPressed()

Emitted when the user starts to drag the slider.

sliderMoved()

Emitted when the user drags the slider.

sliderReleased()

Emitted when the user releases the slider.

这里附一个slider的例子,大家可以移步本人下载频道下载:SliderExample

Qt开发总结(11)——控件之输入控件