天天看点

QComboBox、QFrame、QLabel

作者:QT教程

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 设置为相应的索引。

QComboBox、QFrame、QLabel

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)

在给定索引处将分隔符项插入组合框。

  • 如果索引等于或大于项目总数,则新项目将附加到现有项目列表中。
  • 如果索引为零或为负,则新项目将添加到现有项目列表的前面。
QComboBox、QFrame、QLabel

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)

为组合框中的项目设置根模型项目索引。

QComboBox、QFrame、QLabel

24、void setView(QAbstractItemView *itemView)

设置组合框弹出窗口中使用的视图。组合框拥有itemView的所有权。

如果想使用便利视图(如 QListWidget、QTableWidget 或 QTreeWidget),请确保在调用此函数之前使用便利小部件模型调用组合框上的 setModel()。

免费学习C++ Qt开发教程视频,点击下面链接免费报名领取视频学习资料

C/C++项目实战/Qt5/C语言/c++/数据库/OpenCV/MFC/QT项目-学习视频教程-腾讯课堂

QFrame

一、描述

QFrame 类也可以直接用于创建没有任何内容的简单占位符框架。

框架样式由框架形状和阴影样式指定,用于在视觉上将框架与周围的小部件分开。

可以使用 QWidget::setContentsMargins() 函数自定义框架和框架内容之间的边距。

一些样式和线宽的组合:

QComboBox、QFrame、QLabel

二、类型成员

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

继续阅读