网站首页 > 技术文章 正文
QComboBox
一、描述
QComboBox 提供了一种以占用最少屏幕空间的方式向用户呈现选项列表的方法。
QComboBox 为其弹出列表使用模型/视图框架并存储其项目。默认情况下,QStandardItemModel 存储项目, QListView 子类显示弹出列表。可以直接访问模型和视图(使用 model() 和 view()),但 QComboBox 还提供设置和获取项目数据的功能(例如,setItemData() 和 itemText())。还可以设置新模型和视图(使用 setModel() 和 setView())。对于组合框标签中的文本和图标,使用具有 Qt::DisplayRole 和 Qt::DecorationRole 的模型中的数据。请注意,不能更改 view() 的 SelectionMode。
二、类型成员
1、enum QComboBox::InsertPolicy:此枚举指定当用户输入新字符串时 QComboBox 应该做什么。
- NoInsert:字符串不会插入组合框。
- InsertAtTop:字符串将作为组合框中的第一项插入。
- InsertAtCurrent:当前项目将被字符串替换。
- InsertAtBottom:字符串将插入组合框中的最后一项之后。
- InsertAfterCurrent:在组合框中的当前项目之后插入字符串。
- InsertBeforeCurrent:在组合框中的当前项目之前插入字符串。
- InsertAlphabetically:字符串按字母顺序插入组合框中。
2、enum QComboBox::SizeAdjustPolicy:此枚举指定当添加新内容或内容更改时 QComboBox 的大小提示应如何调整。
- AdjustToContents:组合框将始终根据内容进行调整
- AdjustToContentsOnFirstShow:组合框将在第一次显示时调整其内容。
- AdjustToMinimumContentsLengthWithIcon:组合框将调整为 minimumContentsLength 加上图标的空间。 出于性能原因,应在大型模型上使用此策略。
三、属性成员
1、【read-only】count : const int
组合框中的项目数。
2、【read-only】currentData : const QVariant
当前项目的数据。
3、currentIndex : int
组合框中当前项目的索引。插入或删除项目时,当前索引可以更改。
4、currentText : QString
当前文本。如果组合框是可编辑的,则当前文本是行编辑显示的值。
如果组合框是可编辑的,setCurrentText() 只会调用 setEditText()。否则,如果列表中有匹配的文本,则 currentIndex 设置为相应的索引。
5、duplicatesEnabled : bool
可编辑时设置setSizeAdjustPolicy()将输入内容插入到组合框,是否可以在组合框中插入重复项。默认为 false。
请注意,始终可以以编程方式将重复项插入组合框。
6、editable : bool
是否可以编辑组合框。默认为 false。编辑的效果取决于插入策略。
注意:禁用可编辑状态时,将删除验证器和完成器。
7、frame : bool
略。
8、iconSize : QSize
组合框中显示的图标的大小。这是图标可以具有的最大大小,较小尺寸的图标不会放大。
9、insertPolicy : InsertPolicy
可编辑时插入的项目应出现在组合框中的位置的策略。
默认值为 InsertAtBottom,即新项目将出现在项目列表的底部。
10、maxCount : int
组合框中允许的最大项目数。
如果将最大数量设置为小于组合框中当前项目的数量,则额外的项目将被截断。如果在组合框上设置了外部模型,这也适用。
11、maxVisibleItems : int
组合框屏幕上允许的最大项目数。默认为 10。
对于 QStyle::SH_ComboBox_Popup 返回 true 的样式中的不可编辑组合框,将忽略此属性。
12、minimumContentsLength : int
应适合组合框的最小字符数。默认值为 0。
如果此属性设置为正值,则 minimumSizeHint() 和 sizeHint() 会将其考虑此属性在内。
13、modelColumn : int
模型中可见的列。默认为 0。
14、placeholderText : QString
未设置有效索引时显示的占位符文本文本。
当设置无效索引时将显示占位符文本,下拉列表中的文本不可访问。在添加项目之前调用此函数时,将显示占位符文本,否则如果要显示占位符文本,则必须以编程方式调用 setCurrentIndex(-1)。
当 QComboBox 可编辑时,请改用 lineEdit()->setPlaceholderText()。
15、sizeAdjustPolicy : SizeAdjustPolicy
内容更改时组合框大小如何更改的策略。默认值为 AdjustToContentsOnFirstShow。
四、成员函数
1、QComboBox(QWidget *parent = nullptr)
使用默认模型 QStandardItemModel 构造具有给定父级的组合框。
2、【信号】void activated(int index)
当选择组合框中的项目时发送此信号。请注意,即使选择未更改,也会发送此信号。
【信号】void textActivated(const QString &text)
当选择组合框中的项目时发送此信号。请注意,即使选择未更改,也会发送此信号。
3、void clear()
清除组合框,删除所有项目。
如果在组合框上设置了外部模型,则调用此函数时该模型仍将被清除。
4、void clearEditText()
清除组合框中用于编辑的行编辑的内容。可编辑时才有意义。
5、【信号】void currentIndexChanged(int index)
每当组合框中的 currentIndex 通过用户交互或以编程方式更改时,就会发送此信号。如果组合框变空则index为 -1。
6、【信号】void currentTextChanged(const QString &text)
每当 currentText 更改时发送此信号。新值作为文本传递。
7、【信号】void editTextChanged(const QString &text)
当组合框的行编辑小部件中的文本发生更改时,会发出此信号。
8、【信号】void highlighted(int index)
当突出显示组合框弹出列表中的项目时,将发送此信号。
9、void setEditText(const QString &text)
在组合框的文本编辑中设置文本。可编辑时才有意义。
10、【信号】void textHighlighted(const QString &text)
当突出显示组合框弹出列表中的项目时,将发送此信号。
11、void addItem(const QString &text, const QVariant &userData = QVariant())
使用给定的文本将一个项目添加到组合框,并包含指定的 userData(存储在 Qt::UserRole 中)。 该项目将附加到现有项目的列表中。
void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
使用给定的图标和文本将一个项目添加到组合框,并包含指定的 userData(存储在 Qt::UserRole 中)。 该项目将附加到现有项目的列表中。
void addItems(const QStringList &texts)
将给定文本列表中的每个字符串添加到组合框。 每个项目依次附加到现有项目的列表中。
void insertItem(int index, const QString &text, const QVariant &userData = QVariant())
void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
void insertItems(int index, const QStringList &list)
将文本和用户数据(存储在 Qt::UserRole 中)插入到组合框中给定索引处。
- 如果索引等于或大于项目总数,则新项目将附加到现有项目列表中。
- 如果索引为零或为负,则新项目将插入到现有项目列表的前面。
QVariant itemData(int index, int role = Qt::UserRole)
返回组合框中给定索引中给定角色的数据,如果没有此角色的数据,则返回无效的 QVariant。
void removeItem(int index)
从组合框中删除给定索引处的项目。如果索引超出范围,此函数将不执行任何操作。
12、void insertSeparator(int index)
在给定索引处将分隔符项插入组合框。
- 如果索引等于或大于项目总数,则新项目将附加到现有项目列表中。
- 如果索引为零或为负,则新项目将添加到现有项目列表的前面。
13、void setCompleter(QCompleter *completer) / QCompleter * completer()
设置要使用的完成器。如果为 nullptr,则禁用自动完成。
默认情况下,对于可编辑的组合框,会自动创建一个执行不区分大小写的内联完成的 QCompleter。
当 editable 属性变为 false 时,或者当行编辑被调用 setLineEdit() 替换时,完成符将被删除。在不可编辑的 QComboBox 上设置完成器将被忽略。
14、int findData(const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = static_cast<Qt::MatchFlags>(Qt::MatchExactly|Qt::MatchCaseSensitive))
返回包含给定角色的给定数据的项目的索引,否则返回-1。
flags 指定如何搜索组合框中的项目。Qt::MatchFlags见 QML控件类型:ComboBox
int findText(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive)
返回包含给定文本的项目的索引,否则返回-1。
15、[virtual] void hidePopup()
隐藏组合框中的项目列表。
[virtual] void showPopup()
显示组合框中的项目列表。
如果重新实现此函数以显示自定义弹出窗口,应确保调用 hidePopup() 以重置内部状态。
16、void initStyleOption(QStyleOptionComboBox *option)
使用此 QComboBox 中的值初始化选项。当子类需要 QStyleOptionComboBox,但又不想自己填写所有信息时,此方法很有用。
17、QVariant itemData(int index, int role = Qt::UserRole)
void setItemData(int index, const QVariant &value, int role = Qt::UserRole)
返回 / 设置组合框中给定索引中给定角色的数据,如果没有此角色的数据,则返回无效的 QVariant。
18、void setItemDelegate(QAbstractItemDelegate *delegate)
设置弹出列表视图的项目委托。组合框获得委托的所有权。
任何现有的委托都将被删除,但不会被删除,现有委托的所有权交给用户。
19、QIcon itemIcon(int index) / void setItemIcon(int index, const QIcon &icon)
返回 / 设置给定索引的图标。
20、QString itemText(int index) / void setItemText(int index, const QString &text)
设置 / 返回给定索引上项目的文本。
21、QLineEdit * lineEdit()
返回用于编辑组合框中项目的行编辑器,只有可编辑的组合框才有行编辑器。
void setLineEdit(QLineEdit *edit)
设置要使用的行编辑器。组合框拥有行编辑器的所有权。
由于组合框的行编辑器拥有 QCompleter,任何先前对 setCompleter() 的调用将不再有效。
22、void setModel(QAbstractItemModel *model)
设置模型。model不能为 nullptr。如果要清除模型的内容,请调用 clear()。
如果组合框是可编辑的,那么模型也将设置在行编辑的完成器上。
23、void setRootModelIndex(const QModelIndex &index)
为组合框中的项目设置根模型项目索引。
24、void setView(QAbstractItemView *itemView)
设置组合框弹出窗口中使用的视图。组合框拥有itemView的所有权。
如果想使用便利视图(如 QListWidget、QTableWidget 或 QTreeWidget),请确保在调用此函数之前使用便利小部件模型调用组合框上的 setModel()。
免费学习C++ Qt开发教程视频,点击下面链接免费报名领取视频学习资料
C/C++项目实战/Qt5/C语言/c++/数据库/OpenCV/MFC/QT项目-学习视频教程-腾讯课堂
QFrame
一、描述
QFrame 类也可以直接用于创建没有任何内容的简单占位符框架。
框架样式由框架形状和阴影样式指定,用于在视觉上将框架与周围的小部件分开。
可以使用 QWidget::setContentsMargins() 函数自定义框架和框架内容之间的边距。
一些样式和线宽的组合:
二、类型成员
1、enum QFrame::Shadow:此枚举类型定义用于为框架提供 3D 效果的阴影类型。
- Plain:框架和内容与周围平齐。使用调色板 QPalette::WindowText 颜色绘制(没有任何 3D 效果)
- Raised:框架和内容出现凸起; 使用当前颜色组的浅色和深色绘制 3D 凸起线
- Sunken:框架和内容出现凹陷; 使用当前颜色组的明暗颜色绘制 3D 凹陷线
2、enum QFrame::Shape:此枚举类型定义可用框架的形状。
- NoFrame:什么都不绘制
- Box:在其内容周围绘制一个框
- Panel:绘制一个面板,使内容显得凸起或凹陷
- StyledPanel:绘制一个矩形面板,其外观取决于当前的 GUI 样式。 它可以凸起或凹陷
- HLine:绘制一条水平线,不加框(用作分隔符)
- VLine:绘制一条垂直线,没有框(用作分隔符)
- WinPanel:绘制一个矩形面板,它可以像 Windows 2000 中的面板一样凸起或凹陷。指定此形状将线宽设置为 2 像素。提供 WinPanel 是为了兼容性。对于 GUI 样式独立性,建议改用 StyledPanel
3、enum QFrame::StyleMask:此枚举定义了两个常量,可用于提取 frameStyle() 的两个组件:
- Shadow_Mask:frameStyle() 的阴影部分
- Shape_Mask:frameStyle() 的形状部分
三、属性成员
1、frameRect : QRect
绘制框架的矩形。默认情况下是整个小部件。当小部件改变大小时,框架矩形会自动调整。
2、frameShadow : Shadow
框架样式的框架阴影。
3、frameShape : Shape
框架样式的框架形状。
4、frameWidth : const int
样式框架确定的宽度。例如,NoFrame 指定的样式的框架宽度始终为 0,而 Panel 指定的样式框架宽度等于 lineWidth。
5、lineWidth : int
框架的宽度。
用作分隔符的框架(HLine 和 VLine)的 lineWidth 由 frameWidth 指定。
6、midLineWidth : int
框架中间多出一条线的宽度,它使用第三种颜色来获得特殊的3D效果。仅为凸起(raised)或凹陷(sunken)的 Box、HLine、VLine 框架绘制中线。
四、成员函数
1、QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
构造一个具有框架样式 NoFrame 和 frameWidth = 1的框架小部件。
2、void setFrameStyle(int style)
设置框架样式。框架形状在 QFrame::Shape 中给出,阴影样式在 QFrame::Shadow 中给出。
QLabel
一、描述
QLabel继承自 QFrame。QLabel 用于显示文本或图像。 不提供用户交互功能。
二、属性成员
1、alignment : Qt::Alignment
内容的对齐方式。默认情况内容是左对齐和垂直居中的。
2、【read-only】hasSelectedText : const bool
是否选择了任何文本。
3、indent : int
以像素为单位保存标签的文本缩进。默认为 -1。
当标签显示文本时:
- 如果 alignment() 是Qt::AlignLeft,则缩进应用于左边缘
- 如果 alignment() 是Qt::AlignRight,则缩进应用于右边缘
- 如果 alignment() 是Qt::AlignTop,则缩进应用于顶部边缘
- 如果 alignment() 是Qt::AlignBottom,则到底部边缘
- 如果此值小于等于0,标签计算有效缩进如下:
- 如果 frameWidth() 为 0,有效缩进变为 0
- 如果 frameWidth() 大于 0,有效缩进变为小部件当前 font() 的“x”字符宽度的一半。
4、margin : int
边距的宽度。即框架的最里面的像素和内容的最外面的像素之间的距离。默认为 0。
5、openExternalLinks : bool
指定 QLabel 是否应使用 QDesktopServices::openUrl() 自动打开链接而不是发出 linkActivated() 信号。默认值为false。
6、pixmap : QPixmap
标签的像素图。设置像素图会清除任何以前的内容。
7、scaledContents : bool
标签是否将缩放其内容以填充所有可用空间。默认值为 false。
当启用并且标签显示像素图时,它将缩放像素图以填充可用空间。
8、【read-only】selectedText : const QString
选定的文本。如果没有选定文本,则此属性的值为空字符串。
9、text : QString
标签的文本。设置文本会清除任何以前的内容。
文本将被解释为纯文本或富文本,具体取决于文本格式设置。默认设置为 Qt::AutoText,即 QLabel 将尝试自动检测文本集的格式。
QLabel 非常适合显示小型富文本文档,例如从标签的调色板和字体属性获取文档特定设置(字体、文本颜色、链接颜色)的小型文档。对于大型富文本文档,请在只读模式下使用 QTextEdit。 QTextEdit 还可以在必要时提供滚动条。
如果文本包含富文本,此功能将启用鼠标跟踪。
10、textFormat : Qt::TextFormat
标签的文本格式。默认格式是 Qt::AutoText。
- Qt::PlainText:文本字符串被解释为纯文本字符串。
- Qt::RichText:文本字符串被解释为富文本字符串。
- Qt::AutoText:如果 Qt::mightBeRichText() 返回 true,则文本字符串被解释为 Qt::RichText,否则解释为 Qt::PlainText。
- Qt::MarkdownText:文本字符串被解释为 Markdown 格式的文本。
相关:
bool Qt::mightBeRichText(const QString &text)
返回字符串文本是否可能是富文本。
QString Qt::convertFromPlainText(const QString &plain, Qt::WhiteSpaceMode mode = WhiteSpacePre)
将纯文本字符串纯文本转换为 HTML 格式的段落,同时保留其大部分外观。mode 定义了如何处理空格。
11、textInteractionFlags : Qt::TextInteractionFlags
标签在显示文本时应如何与用户输入交互。默认值为 Qt::LinksAccessibleByMouse。
Qt::TextInteractionFlags见Qt图形视图框架:QGraphicsTextItem
- 如果标志包含 Qt::LinksAccessibleByKeyboard,则焦点策略也会自动设置为 Qt::StrongFocus。
- 如果标志包含 Qt::TextSelectableByKeyboard,则焦点策略设置为 Qt::ClickFocus。
12、wordWrap : bool
标签的自动换行策略,默认为false。如果为true,则标签文本会在必要的断字处换行。
三、成员函数
1、void clear()
清除任何标签内容。
2、【信号】void linkActivated(const QString &link)
当用户单击链接时会发出此信号。
3、【信号】void linkHovered(const QString &link)
当用户将鼠标悬停在链接上时会发出此信号。
4、void setMovie(QMovie *movie)
将标签内容设置为QMovie。任何先前的内容都将被清除。该标签不拥有movie的所有权。
5、void setNum(double num)
void setNum(int num)
将标签内容设置为包含 num 文本表示的纯文本。 任何先前的内容都将被清除。
6、void setPicture(const QPicture &picture)
将标签内容设置为图片。 任何先前的内容都将被清除。
7、int selectionStart()
返回标签中第一个选定字符的索引,如果没有选择文本,则返回 -1。
8、void setBuddy(QWidget *buddy)
设置此标签伙伴部件。
当用户按下此标签指示的快捷键时,键盘焦点将转移到标签的好友小部件。
伙伴机制仅适用于包含文本的 QLabel,其中一个字符以与号“&”为前缀。 该字符被设置为快捷键。(要显示实际的&符号,使用“&&”)。
QLineEdit *nameEdit = new QLineEdit(this);
QLabel *nameLabel = new QLabel("&Name:", this);
nameLabel->setBuddy(nameEdit);
QLineEdit *phoneEdit = new QLineEdit(this);
QLabel *phoneLabel = new QLabel("&Phone:", this);
phoneLabel->setBuddy(phoneEdit);
使用上面的代码,当用户按下 Alt+N 时焦点会跳转到 Name 字段,当用户按下 Alt+P 时焦点会跳转到 Phone 字段。
要取消设置先前设置的伙伴小部件,调用setBuddy(nullptr)。
9、void setSelection(int start, int length)
从位置 start 开始选择 length 个字符的文本。
免费学习C++ Qt开发教程视频,点击下面链接免费报名领取视频学习资料
C/C++项目实战/Qt5/C语言/c++/数据库/OpenCV/MFC/QT项目-学习视频教程-腾讯课堂
原文链接:https://blog.csdn.net/kenfan1647/article/details/122276450
猜你喜欢
- 2024-10-20 Qt 开发经验总结 qt软件开发
- 2024-10-20 Qt QTableWidget用法总结 qtablewidget qtableview
- 2024-10-20 实战PyQt5: 068-MV框架中的项视图部件
- 2024-10-20 Qt开发经验小技巧231-235 qt开发入门简介
- 2024-10-20 Python+PyQt5进阶(5) pyqt5 django
- 2024-10-20 Qt项目升级到Qt6经验总结 qt更新界面
- 2024-10-20 QTableWidget表格中增删数据 qtablewidget清空表格
- 2024-10-20 C/C++ Qt StatusBar 底部状态栏应用
- 2024-10-20 Qt的常用控件 qt控件详解
- 2024-10-20 Python PyQt5通过QTableWidget表格控件操作SQLite数据库
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)