Qt QWidget以及各种控件、布局 核心属性(适合入门使用时查询)

news2024/11/28 18:55:41

目录

1. QWidget核心属性

2. 按钮类控件

2.1 PushButton 核心属性

2.2 RadioButton 核心属性

2.3 CheckBox 和 Tool Button 核心属性

3. 显示类控件 

3.1 Label 核心属性

3.2 LCDNumber 核心属性

3.3 ProgressBar 核心属性

3.4 Calendar Widget 核心属性

4. 输入类控件 

4.1 Line Edit 核心属性

4.2 TextEdit 核心属性

4.3 ComboBox 核心属性

4.4 SpinBox 核心属性

4.5 DateEdit &TimeEdit 核心属性

4.6 Dial 核心属性

5. 多元素控件

5.1 List Widget 核心属性

5.2 Table Widget 核心属性

5.3 Tree Widget 核心属性

6. 容器类控件

6.1 GroupBox 核心属性

6.2 TabWidget 核心属性

7. 布局管理器

7.1 垂直布局

7.2 ⽔平布局

7.3 ⽹格布局

7.4 表单布局

7.5 Spacer


                                                         新年快乐!!!

1. QWidget核心属性

属性作⽤
enabled设置控件是否可使⽤.true 表⽰可⽤, false 表⽰禁⽤.
geometry

位置和尺⼨.包含x,y,width,height四个部分.

其中坐标是以⽗元素为参考进⾏设置的.

windowTitle设置widget标题.
windowIcon设置widget图标.
windowOpacity设置widget透明度.
cursor

⿏标悬停时显⽰的图标形状.

是普通箭头,还是沙漏,还是⼗字等形状.

在QtDesigner界⾯中可以清楚看到可选项.

font

字体相关属性.

涉及到字体家族,字体⼤⼩,粗体,斜体,下划线等等样式.

toolTip⿏标悬停在widget上会在状态栏中显⽰的提⽰信息.
toolTipDuringtoolTip显⽰的持续时间.
statusTipWidget状态发⽣改变时显⽰的提⽰信息(⽐如按钮被按下等).
whatsThis⿏标悬停并按下alt+F1时,显⽰的帮助信息(显⽰在⼀个弹出的窗⼝中).
styleSheet

允许使⽤CSS来设置widget中的样式.

Qt中⽀持的样式⾮常丰富,对于前端开发⼈员上⼿是⾮常友好的.

focusPolicy

该widget如何获取到焦点.

• Qt::NoFocus:控件不参与焦点管理,即⽆法通过键盘或⿏标获取焦点

• Qt::TabFocus:控件可以通过Tab键获得焦点

• Qt::ClickFocus:控件可以通过⿏标点击获得焦点

• Qt::StrongFocus:控件可以通过键盘和⿏标获得焦点

• Qt::WheelFocus:控件可以通过⿏标滚轮获得焦点(在某些平台或样式中可能不可 ⽤)

contextMenuPolicy

上下⽂菜单的显⽰策略.

• Qt::DefaultContextMenu:默认的上下⽂菜单策略,⽤⼾可以通过⿏标右键或键盘 快捷键触发上下⽂菜单

• Qt::NoContextMenu:禁⽤上下⽂菜单,即使⽤⼾点击⿏标右键也不会显⽰菜单

• Qt::PreventContextMenu:防⽌控件显⽰上下⽂菜单,即使⽤⼾点击⿏标右键也不 会显⽰菜单

• Qt::ActionsContextMenu:将上下⽂菜单替换为控件的“动作”菜单,⽤⼾可以通 过⿏标右键或键盘快捷键触发这个菜单

• Qt::CustomContextMenu:使⽤⾃定义的上下⽂菜单,⽤⼾可以通过⿏标右键或键 盘快捷键触发这个菜单

locale设置语⾔和国家地区.
acceptDrops

该部件是否接受拖放操作。

如果设置为true,那么该部件就可以接收来⾃其他部件的拖放操作。当⼀个部件被拖放 到该部件上时,该部件会接收到相应的拖放事件(如dropEvent)。 如果设置为false,那么该部件将不会接收任何拖放操作。

minimumSize控件的最⼩尺⼨.包含最⼩宽度和最⼩⾼度.
maximumSize控件的最⼤尺⼨.包含最⼤宽度和最⼤⾼度.
sizePolicy尺⼨策略.设置控件在布局管理器中的缩放⽅式.
windowModality指定窗⼝是否具有"模态"⾏为.
sizeIncrement拖动窗⼝⼤⼩时的增量单位.
baseSize窗⼝的基础⼤⼩,⽤来搭配sizeIncrement调整组件尺⼨是计算组件应该调整到的合适的值.
palette调⾊板.可以设置widget的颜⾊⻛格.
mouseTracking

是否要跟踪⿏标移动事件.

如果设为true,表⽰需要跟踪,则⿏标划过的时候该widget就能持续收到⿏标移动事件. 如果设为false,表⽰不需要跟踪,则⿏标划过的时候widget不会收到⿏标移动事件,只 能收到⿏标按下或者释放的事件.

tabletTracking是否跟踪触摸屏的移动事件. 类似于mouseTracking.Qt5.9中引⼊的新属性.
layoutDirection

布局⽅向.

• Qt::LeftToRight:⽂本从左到右排列,也是默认值。

• Qt::RightToLeft:⽂本从右到左排列。

• Qt::GlobalAtomics:部件的布局⽅向由全局原⼦性决定(PS这个翻译其实有点尴 尬.其实就是根据应⽤程序中的其他widget布局⽅向确定的).

autoFillBackground是否⾃动填充背景颜⾊.
windowFilePath

能够把widget和⼀个本地⽂件路径关联起来.

PS:其实作⽤不⼤.

accessibleName设置widget的可访问名称.这个名称可以被辅助技术(像屏幕阅读器)获取到.这个属性⽤于实现⽆障碍程序的场景中(也就是给盲⼈写的程序). PS:其实盲⼈也是可以使⽤电脑和⼿机的.甚⾄盲⼈还能成为程序猿.参⻅ https://www.bilibili.com/video/BV1954y1d7z
accessibleDescripti on设置widget的详细描述.作⽤同accessibleName
inputMethodHints针对输⼊框有效,⽤来提⽰⽤⼾当前能输⼊的合法数据的格式.⽐如只能输⼊数字,只能 输⼊⽇期等.

2. 按钮类控件

2.1 PushButton 核心属性

QPushButton 继承⾃ QAbstractButton .这个类是⼀个抽象类.是其他按钮的⽗类.

属性说明
text按钮中的⽂本
icon按钮中的图标
iconSize按钮中图标的尺⼨
shortCut按钮对应的快捷键
autoRepeat

按钮是否会重复触发.当⿏标左键按住不放时

如果设为true,则会持续产⽣⿏标点击事件;

如果设为false,则必须释放⿏标,再次按下⿏标时才能产⽣点击事件.

(相当于游戏⼿柄上的"连发"效果)

autoRepeatDelay重复触发的延时时间.按住按钮多久之后,开始重复触发.
autoRepeatInterval重复触发的周期.

1. QAbstractButton作为 QWidget 的⼦类,当然也继承了 QWidget 的属性.上⾯介绍的QWidget ⾥的各种属性⽤法,对于 QAbstractButton 同样适⽤.因此表格仅列出 QAbstractButton独有的属性.

2. Qt的api设计⻛格是⾮常清晰的.此处列出的属性都是可以获取和设置的.例如,使⽤ text() 获取按钮⽂本;使⽤ setText() 设置⽂本.

2.2 RadioButton 核心属性

QRadioButton 是单选按钮.可以让我们在多个选项中选择⼀个.

作为 QAbstractButton 和 QWidget 的⼦类,上⾯介绍的属性和⽤法,对于同样适⽤.

属性说明
checkable是否能选中
checked是否已经被选中.checkable是checked的前提条件.
autoExclusive

是否排他.

选中⼀个按钮之后是否会取消其他按钮的选中.

对于 QRadioButton 来说默认就是排他的.

2.3 CheckBox 和 Tool Button 核心属性

QCheckBox 表⽰复选按钮.可以允许选中多个. 和 Q CheckBox 最相关的属性也是 QAbstractButton.

QToolButton 的⼤部分功能,和 QPushButton 是⼀致的.但是 QToolButton 主要应⽤在⼯ 具栏,菜单等场景.

3. 显示类控件 

3.1 Label 核心属性

属性说明
textQLabel 中的⽂本
textFormat

⽂本的格式.

• Qt::PlainText 纯⽂本

• Qt::RichText 富⽂本(⽀持html标签)

• Qt::MarkdownText markdown格式

• Qt::AutoText 根据⽂本内容⾃动决定⽂本格式.

pixmapQLabel 内部包含的图⽚.
scaledContents设为true表⽰内容⾃动拉伸填充 QLabel 设为false则不会⾃动拉伸
alignment

对⻬⽅式.

可以设置⽔平和垂直⽅向如何对⻬.

wordWrap

设为true内部的⽂本会⾃动换⾏.

设为false则内部⽂本不会⾃动换⾏.

indent设置⽂本缩进.⽔平和垂直⽅向都⽣效.
margin

内部⽂本和边框之间的边距.

不同于于indent,但是是上下左右四个⽅向都同时有效.

⽽indent最多只是两个⽅向有效(具体哪两个⽅向有效取决于alignment)

openExternalLinks是否允许打开⼀个外部的链接. (当QLabel⽂本内容包含url的时候涉及到)
buddy

给QLabel关联⼀个"伙伴",这样点击QLabel时就能激活对应的伙伴.

例如伙伴如果是⼀个QCheckBox,那么该QCheckBox就会被选中.

3.2 LCDNumber 核心属性

QLCDNumer 是⼀个专⻔⽤来显⽰数字的控件.类似于"⽼式计算器"的效果.

属性说明
intValueQLCDNumber 显⽰的数字值(int).
value

QLCDNumber 显⽰的数字值(double). 和intValue是联动的. 例如给value设为1.5,intValue的值就是2.

另外,设置value和intValue的⽅法名字为 display ,⽽不是 setValue 或 者 setIntValue .

digitCount显⽰⼏位数字.
mode

数字显⽰形式.

1. QLCDNumber::Dec :⼗进制模式,显⽰常规的⼗进制数字。 2. QLCDNumber::Hex :⼗六进制模式,以⼗六进制格式显⽰数字。

3. QLCDNumber::Bin :⼆进制模式,以⼆进制格式显⽰数字。 4. QLCDNumber::Oct :⼋进制模式,以⼋进制格式显⽰数字。 只有⼗进制的时候才能显⽰⼩数点后的内容.

segmentStyle

设置显⽰⻛格.

1. QLCDNumber::Flat :平⾯的显⽰⻛格,数字呈现在⼀个平坦的表⾯上。

2. QLCDNumber::Outline :轮廓显⽰⻛格,数字具有清晰的轮廓和阴影效 果。

3. QLCDNumber::Filled :填充显⽰⻛格,数字被填充颜⾊并与背景区分 开。

smallDecimalPoint设置⽐较⼩的⼩数点.

3.3 ProgressBar 核心属性

 使⽤ QProgressBar 表⽰⼀个进度条.

属性说明
minimum进度条最⼩值
maximum进度条最⼤值
value进度条当前值
alignment

⽂本在进度条中的对⻬⽅式.

• Qt::AlignLeft :左对⻬

• Qt::AlignRight :右对⻬

• Qt::AlignCenter :居中对⻬

• Qt::AlignJustify :两端对⻬

textVisible进度条的数字是否可⻅.
orientation进度条的⽅向是⽔平还是垂直
invertAppearance是否是朝反⽅向增⻓进度
textDirection⽂本的朝向.
format

展⽰的数字格式.

• %p :表⽰进度的百分⽐(0-100)

• %v :表⽰进度的数值(0-100)

• %m :表⽰剩余时间(以毫秒为单位)

• %t :表⽰总时间(以毫秒为单位)

3.4 Calendar Widget 核心属性

QCalendarWidget 表⽰⼀个"⽇历",形如

属性说明
selectDate当前选中的⽇期
minimumDate最⼩⽇期
maximumDate最⼤⽇期
firstDayOfWeek每周的第⼀天(也就是⽇历的第⼀列)是周⼏.
gridVisible是否显⽰表格的边框
selectionMode是否允许选择⽇期
navigationBarVisible⽇历上⽅标题是否显⽰
horizontalHeaderFormat⽇历上⽅标题显⽰的⽇期格式
verticalHeaderFormat⽇历第⼀列显⽰的内容格式
dateEditEnabled是否允许⽇期被编辑

重要信号

信号说明
selectionChanged(const QDate&)当选中的⽇期发⽣改变时发出
activated(const QDate&)当双击⼀个有效的⽇期或者按下回⻋键时发出,形参是⼀个QDate类型,保存了选中的⽇期
currentPageChanged(int, int)当年份⽉份改变时发出,形参表⽰改变后的新年份和⽉份

4. 输入类控件 

4.1 Line Edit 核心属性

QLineEdit ⽤来表⽰单⾏输⼊框.可以输⼊⼀段⽂本,但是不能换⾏.

属性说明
text输⼊框中的⽂本
inputMask输⼊内容格式约束
maxLength最⼤⻓度
frame是否添加边框
echoMode

显⽰⽅式.

• QLineEdit::Normal :这是默认值,⽂本框会显⽰输⼊的⽂本。 • QLineEdit::Password :在这种模式下,输⼊的字符会被隐藏, 通常⽤星号(*)或等号(=)代替。

• 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是新的⽂本。 代码对⽂本的修改不能触发这个信号.

4.2 TextEdit 核心属性

QTextEdit 表⽰多⾏输⼊框.也是⼀个富⽂本&markdown编辑器. 并且能在内容超出编辑框范围时⾃动提供滚动条.

属性说明
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)⽂本被选中/取消选中时触发

4.3 ComboBox 核心属性

QComboBox 表⽰下拉框.

属性说明
currentText当前选中的⽂本
currentIndex

当前选中的条⽬下标.

从0开始计算.如果当前没有条⽬被选中,值为-1

editable

是否允许修改

设为true时, QComboBox 的⾏为就⾮常接近 QLineEdit ,也可以 设置 validator

iconSize下拉框图标(⼩三⻆)的⼤⼩
maxCount最多允许有多少个条⽬

核⼼⽅法

⽅法说明
addItem(constQString&)添加⼀个条⽬
currentIndex()

获取当前条⽬的下标

从0开始计算.如果当前没有条⽬被选中,值为-1

currentText()获取当前条⽬的⽂本内容.

核⼼信号

⽅法说明

activated(int)

activated(constQString&text)

当⽤⼾选择了⼀个选项时发出.

这个时候相当于⽤⼾点开下拉框,并且⿏标划过某个选项.

此时还没有确认做出选择.

currentIndexChanged(int) currentIndexChanged(constQString &text)

当前选项改变时发出.

此时⽤⼾已经明确的选择了⼀个选项.

⽤⼾操作或者通过程序操作都会触发这个信号.

editTextChanged(constQString& text)当编辑框中的⽂本改变时发出 (editable为true时有效)

4.4 SpinBox 核心属性

使⽤ QSpinBox 或者 QDoubleSpinBox 表⽰"微调框",它是带有按钮的输⼊框.可以⽤来输⼊整 数/浮点数.通过点击按钮来修改数值⼤⼩.

由 于 Sp inBox 和 QDoubleSpinBox ⽤法基本相同,就只介绍 SpinBox 的使⽤了.

属性说明
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,表⽰当前的数值.

4.5 DateEdit &TimeEdit 核心属性

使⽤ QDateEdit 作为⽇期的微调框.使⽤ QTimeEdit 作为时间的微调框.使⽤ QDateTimeEdit 作为时间⽇期的微调框.

这⼏个控件⽤法⾮常相似,我们以 QDateTimeEdit 为例进⾏介绍.

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的偏移量(时差).

关于本地时间(LocalTime)和协调世界时(UTC)

UTC时间是⼀个基于原⼦钟的标准时间.不受地球的⾃转周期影响.和格林威治时间(GMT)是 ⾮常接近的.科学家会通过精密的设备来测量并维护. 咱们的计算机内部使⽤的时间就是基于UTC时间.

本地时间则是基于不同的时区,对UTC时间做出了⼀些调整.⽐如咱们使⽤的北京时间,位于 "东⼋区",就需要在UTC时间基础上+8个⼩时的时差.

核⼼信号

信号说明
dateChanged(QDate)⽇期改变时触发.
timeChanged(QTime)时间改变时触发.
dateTimeChanged(QDateTi me)时间⽇期任意⼀个改变时触发.

4.6 Dial 核心属性

使⽤ Q Dial 表⽰⼀个旋钮.

有 些程序,通过⿏标拖动旋钮旋转,即可完成⼀些相关的设置.

核⼼属性

属性说明
value持有的数值.
minimum最⼩值
maximum最⼤值
singleStep按下⽅向键的时候改变的步⻓.
pageStep按下pageUp/pageDown的时候改变的步⻓.
sliderPosition界⾯上旋钮显⽰的初始位置
tracking

外观是否会跟踪数值变化.

默认值为true.⼀般不需要修改.

wrapping

是否允许循环调整.

即数值如果超过最⼤值,是否允许回到最⼩值.

(调整过程能否"套圈")

notchesVisible是否显⽰刻度线
notchTarget

刻度线之间的相对位置.

数字越⼤,刻度线越稀疏.

核⼼信号

属性说明
valueChanged(int)数值改变时触发
rangeChanged(int, int)范围变化时触发

4.7 Slider 核心属性

使⽤ Q Slider 表⽰⼀个滑动条.

QSlider 和 QDial 都是继承⾃ QAbstractSlider ,因此⽤法上基本相同.

核⼼属性

属性说明
value持有的数值.
minimum最⼩值
maximum最⼤值
singleStep按下⽅向键的时候改变的步⻓.
pageStep按下pageUp/pageDown的时候改变的步⻓.
sliderPosition滑动条显⽰的初始位置
tracking

外观是否会跟踪数值变化.

默认值为true.⼀般不需要修改.

orientation滑动条的⽅向是⽔平还是垂直
invertedAppearance是否要翻转滑动条的⽅向
tickPosition刻度的位置.
tickInterval刻度的密集程度.

核⼼信号

属性说明
valueChanged(int)数值改变时触发
rangeChanged(int,int)范围变化时触发

5. 多元素控件

Qt 中提供的多元素控件有:

• QListWidget

• QListView

• QTableWidget

• QTableView

• QTreeWidget

• QTreeView

xxWidget和xxView之间的区别 

以QTableWidget和QTableView为例.

• QTableView 是基于MVC设计的控件.QTableView⾃⾝不持有数据.使⽤QTableView的 时候需要⽤⼾创建⼀个Model对象(⽐如 QStandardModel ),并且把Model和 QTableView 关联起来.后续修改Model中的数据就会影响QTableView的显⽰;修改 QTableView 的显⽰也会影响到Model中的数据(双向绑定).

• QTableWidget 则是QTableView的⼦类,对Model进⾏了封装.不需要⽤⼾⼿动创建 Model对象,直接就可以往QTableWidget中添加数据了.

5.1 List Widget 核心属性

使⽤ QListWidget 能够显⽰⼀个纵向的列表.形如:

每个选项都可以被选中.

核⼼属性

属性说明
currentRow当前被选中的是第⼏⾏
count⼀共有多少⾏
sortingEnabled是否允许排序
isWrapping是否允许换⾏
itemAlignment元素的对⻬⽅式
selectRectVisible被选中的元素矩形是否可⻅
spacing元素之间的间隔

核⼼⽅法

⽅法说明

addItem(constQString&label)

addItem(QListWidgetItem*item)

列表中添加元素.
currentItem()返回QListWidgetItem*表⽰当前选中的元素
setCurrentItem(QListWidgetItem*item)设置选中哪个元素
setCurrentRow(introw)设置选中第⼏⾏的元素
insertItem(constQString&label,int row) insertItem(QListWidgetItem*item,int row)在指定的位置插⼊元素
item(introw)返回QListWidgetItem*表⽰第row⾏的元素
takeItem(introw)删除指定⾏的元素,返回QListWidgetItem*表⽰是哪个元素被删 除了

核⼼信号

⽅法说明
currentItemChanged(QListWidgetItem* current,QListWidgetItem*old)选中不同元素时会触发.参数是当前选中的元素和之前选中的元素.
currentRowChanged(int)选中不同元素时会触发.参数是当前选中元素的⾏数.
itemClicked(QListWidgetItem*item)点击某个元素时触发
itemDoubleClicked(QListWidgetItem* item)双击某个元素时触发
itemEntered(QListWidgetItem*item)⿏标进⼊元素时触发

在上述介绍中,涉及到⼀个关键的类, QListWidgetItem . 这个类表⽰ QListWidget 中的⼀个元素. 核⼼⽅法如下,本质上就是⼀个"⽂本+图标"构成的.

⽅法说明
setFont设置字体
setIcon设置图标
setHidden设置隐藏
setSizeHint设置尺⼨
setSelected设置是否选中
setText设置⽂本
setTextAlignment设置⽂本对⻬⽅式

5.2 Table Widget 核心属性

使⽤ QTableWidget 表⽰⼀个表格控件.⼀个表格中包含若⼲⾏,每⼀⾏⼜包含若⼲列. 表格中的每个单元格,是⼀个 QTableWidgetItem 对象.

QTableWidget 核⼼⽅法

⽅法说明
item(int row, int column)根据⾏数列数获取指定的QTableWidgetItem*
setItem(int row, int column, QTableWidget*)根据行数列数设置表格中的元素
currentItem()返回被选中的元素QTableWidgetItem*
currentRow()返回被选中元素是第⼏⾏
currentColumn()返回被选中元素是第⼏列
row(QTableWidgetItem*)获取指定item是第⼏⾏
column(QTableWidgetItem*)获取指定item是第⼏列
rowCount()获取⾏数
columnCount()获取列数
insertRow(introw)在第row⾏处插⼊新⾏
insertColumn(intcolumn)在第column列插⼊新列
removeRow(introw)删除第row⾏
removeColumn(intcolumn)删除第column列
setHorizontalHeaderItem(int column,QTableWidget*)设置指定列的表头
setVerticalHeaderItem(introw, QTableWidget*)设置指定⾏的表头

QTableWidgetItem 核⼼信号

信号说明
cellClicked(introw,intcolumn)点击单元格时触发
cellDoubleClicked(introw,int column)双击单元格时触发
cellEntered(introw,intcolumn)⿏标进⼊单元格时触发
currentCellChanged(introw,int column,intpreviousRow,int previousColumn)选中不同单元格时触发

QTableWidgetItem 核⼼⽅法

⽅法说明
row()获取当前是第⼏⾏
column()获取当前是第⼏列
setText(const QString&)设置⽂本
setTextAlignment(int)设置⽂本对⻬
setIcon(const QIcon&)设置图标
setSelected(bool)设置被选中
setSizeHints(const QSize&)设置尺⼨
setFont(const QFont&)设置字体

5.3 Tree Widget 核心属性

使⽤ QTreeWidget 表⽰⼀个树形控件.⾥⾯的每个元素,都是⼀个 QTreeWidgetItem ,每个 QTreeWidgetItem 可以包含多个⽂本和图标,每个⽂本/图标为⼀个列.

可以给 QTreeWidget 设置顶层节点(顶层节点可以有多个),然后再给顶层节点添加⼦节点,从⽽构成 树形结构.

QTreeWidget 核⼼⽅法

⽅法说明
clear清空所有⼦节点
addTopLevelItem(QTreeWidgetItem*item)新增顶层节点
topLevelItem(intindex)获取指定下标的顶层节点.
topLevelItemCount()获取顶层节点个数
indexOfTopLevelItem(QTreeWidgetItem* item)查询指定节点是顶层节点中的下标
takeTopLevelItem(intindex)删除指定的顶层节点.返回QTreeWidgetItem*表⽰被删除 的元素
currentItem()获取到当前选中的节点,返回QTreeWidgetItem*
setCurrentItem(QTreeWidgetItem*item)选中指定节点
setExpanded(bool)展开/关闭节点
setHeaderLabel(constQString&text)设置TreeWidget的header名称.

QTreeWidget 核⼼信号

信号说明
currentItemChanged(QTreeWidgetItem* current,QTreeWidgetItem*old)切换选中元素时触发
itemClicked(QTreeWidgetItem*item,intcol)点击元素时触发
itemDoubleClicked(QTreeWidgetItem*item, intcol)双击元素时触发
itemEntered(QTreeWidgetItem*item,intcol)⿏标进⼊时触发
itemExpanded(QTreeWidgetItem*item)元素被展开时触发
itemCollapsend(QTreeWidgetItem*item)元素被折叠时触发

QTreeWidgetItem 核⼼属性

属性说明
text持有的⽂本
textAlignment⽂本对⻬⽅式
icon持有的图表
font⽂本字体
hidden是否隐藏
disabled是否禁⽤
expand是否展开
sizeHint尺⼨⼤⼩
selected是否选中

QTreeWidgetItem 核⼼⽅法

⽅法说明
addChild(QTreeWidgetItem*child)新增⼦节点
childCount()⼦节点的个数
child(intindex)获取指定下标的⼦节点.返回QTreeWidgetItem*
takeChild(intindex)删除对应下标的⼦节点
removeChild(QTreeWidgetItem* child)删除对应的⼦节点
parent()获取该元素的⽗节点

6. 容器类控件

6.1 GroupBox 核心属性

使⽤ QGroupBox 实现⼀个带有标题的分组框.可以把其他的控件放到⾥⾯作为⼀组.这样看起来能更 好看⼀点.

注意,不要把 QGroupBox 和 QButtonGroup 混淆.(之前在介绍 QRadionButton 的时候提到了 QButtonGroup )

核⼼属性

属性说明
title分组框的标题
alignment分组框内部内容的对⻬⽅式
flat是否是"扁平"模式
checkable

是否可选择.

设为true,则在title前⽅会多出⼀个可勾选的部分.

checked描述分组框的选择状态(前提是checkable为true)

分组框只是⼀个⽤来"美化界⾯"这样的组件,并不涉及到⽤⼾交互和业务逻辑.属于"锦上添花".

6.2 TabWidget 核心属性

使⽤ QTabWidget 实现⼀个带有标签⻚的控件,可以往⾥⾯添加⼀些widget.进⼀步的就可以通过标签⻚来切换.

核⼼属性

属性说明
tabPosition

标签⻚所在的位置.

• North 上⽅

• South 下⽅

• West 左侧

• East 右侧

currentIndex当前选中了第⼏个标签⻚(从0开始计算)
currentTabText当前选中的标签⻚的⽂本
currentTabName当前选中的标签⻚的名字
currentTabIcon当前选中的标签⻚的图标
currentTabToolTip当前选中的标签⻚的提⽰信息
tabsCloseable标签⻚是否可以关闭
movable标签⻚是否可以移动

核⼼信号

属性说明
currentChanged(int)在标签⻚发⽣切换时触发,参数为被点击的选项卡编号.
tabBarClicked(int)在点击选项卡的标签条的时候触发.参数为被点击的选项卡编号.
tabBarDoubleClicked(int)在双击选项卡的标签条的时候触发.参数为被点击的选项卡编号.
tabCloseRequest(int)在标签⻚关闭时触发.参数为被关闭的选项卡编号.

注意

• QTabWidget 中的每个标签⻚都是⼀个

• 点击标签⻚,就可以直接切换. QWidget

• 右键 QTabWidget ,可以添加标签⻚或者删除标签⻚.

7. 布局管理器

之前使⽤Qt在界⾯上创建的控件,都是通过"绝对定位"的⽅式来设定的. 也就是每个控件所在的位置,都需要计算坐标,最终通过 setGeometry 或者 move ⽅式摆放过去.

这种设定⽅式其实并不⽅便.尤其是界⾯如果内容⽐较多,不好计算.⽽且⼀个窗⼝⼤⼩往往是可以调整的,按照绝对定位的⽅式,也⽆法⾃适应窗⼝⼤⼩.

因此Qt引⼊"布局管理器"(Layout)机制,来解决上述问题.

当然,布局管理器并⾮Qt独有.其他的GUI开发框架,像Android,前端等也有类似的机制.

7.1 垂直布局

使⽤ QVBoxLayout 表⽰垂直的布局管理器.V是 vertical 的缩写.

核⼼属性

属性说明
layoutLeftMargin左侧边距
layoutRightMargin右侧边距
layoutTopMargin上⽅边距
layoutBottomMargin下⽅边距
layoutSpacing相邻元素之间的间距

Layout 只是⽤于界⾯布局,并没有提供信号.

7.2 ⽔平布局

使⽤ QHBoxLayout 表⽰垂直的布局管理器.H是 horizontal 的缩写.

核⼼属性(和 QVBoxLayout 属性是⼀致的)

7.3 ⽹格布局

Qt 中还提供了 QGridLayout ⽤来实现⽹格布局的效果.可以达到M*N的这种⽹格的效果.

核⼼属性

整体和 QVBoxLayout 以及 QHBoxLayout 相似.但是设置spacing的时候是按照垂直⽔平两个 ⽅向来设置的.

属性说明
layoutLeftMargin左侧边距
layoutRightMargin右侧边距
layoutTopMargin上⽅边距
layoutBottomMargin下⽅边距
layoutHorizontalSpacing相邻元素之间⽔平⽅向的间距
layoutVerticalSpacing相邻元素之间垂直⽅向的间距
layoutRowStretch⾏⽅向的拉伸系数
layoutColumnStretch列⽅向的拉伸系数

7.4 表单布局

除了上述的布局管理器之外,Qt还提供了⻔⽤于实现两列表单的布局. 这 QFormLayout ,属于是 QGridLayout 的特殊情况,专⻔⽤于实现两列表单的布局.

这种表单布局多⽤于让⽤⼾填写信息的场景.左侧列为提⽰,右侧列为输⼊框.

7.5 Spacer

使⽤布局管理器的时候,可能需要在控件之间,添加⼀段空⽩.就可以使⽤ QSpacerItem 来表⽰.

核⼼属性

属性说明
width宽度
height⾼度
hData

⽔平⽅向的sizePolicy

• QSizePolicy::Ignored :忽略控件的尺⼨,不对布局产⽣影响。

• QSizePolicy::Minimum :控件的最⼩尺⼨为固定值,布局时不会超过该值。

• QSizePolicy::Maximum :控件的最⼤尺⼨为固定值,布局时不会⼩于该值。

• QSizePolicy::Preferred :控件的理想尺⼨为固定值,布局时会尽量接近该 值。

• QSizePolicy::Expanding :控件的尺⼨可以根据空间调整,尽可能占据更多空 间。

• QSizePolicy::Shrinking :控件的尺⼨可以根据空间调整,尽可能缩⼩以适应 空间。

vData垂直⽅向的sizePolicy 选项同上.

最后的最后,创作不易,希望读者三连支持💖

赠人玫瑰,手有余香💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1448206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Photoshop 中的“彩蛋”

在 Photoshop 中隐藏了几个“彩蛋” Easter Eggs,是开发者留下的小秘密或玩笑功能,也许是他们在紧张的开发过程中的一种自我调节吧,就如复活节彩蛋一样,同样也可以给 Photoshop 的用户们带来一点小“惊喜”。 这些彩蛋通常以有趣的…

上位机图像处理和嵌入式模块部署(借鉴与学习)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于很多学院派的同学来说,他们对市场的感觉一般是比较弱的。如果写一个软件的话,或者说开发一个项目的话,他们…

【C++关联式容器】unordered_map

目录 unordered_map 1. pair类型 2. 关联式容器额外的类型别名 3. 哈希桶 4. 无序容器对关键字类型的要求 5. Member functions 5.1 constructor、destructor、operator 5.1.1 constructor 5.1.2 destructor 5.1.3 operator 5.2 Capacity ​5.2.1 empty 5.2.2 si…

C/C++内存管理:new、delete功能及原理实现

目录 一、C/C内存分布 二、C中内存管理方式 2.1new/delete操作内置类型 2.2 new和delete操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 4.1内置类型 4.2自定义类型 五、定位new 一、C/C内存分布 int globalVar 1; static int sta…

Java学习第十三节之三种初始化和内存分析

三种初始化 package array;public class ArrayDemo02 {public static void main(String[] args) {//静态初始化&#xff1b;创建赋值int[] a {1, 2, 3, 4, 5, 6, 7, 8};System.out.println(a[0]);for (int i 0; i <a.length; i) {System.out.println(a[i]);}//动态初始化…

你的电脑关机吗

目录 程序员为什么不喜欢关电脑&#xff1f; 电脑长时间不关机会怎样? 电脑卡顿 中度风险 硬件损耗 能源浪费 散热问题 软件问题 网络安全问题 程序员为什么不喜欢关电脑&#xff1f; 大部分人都会选择将电脑进行关机操作。其实这不难理解&#xff0c;毕竟人类都需要…

Qt初使用(使用Qt创建项目,在创建的项目中添加类,Qt中输出内容到控制台,设置窗口大小和窗口标题,Qt查看说明文档)

目录 一.创建带模板的项目新建项目运行在文件中查看该项目文件 二.在创建好的项目中添加类三.创建空项目&#xff08;不使用自带的模板&#xff09;四.Qt中输出内容到控制台五.设置窗口大小 , 窗口标题 ,固定窗口大小QWidget组件的说明 六.Pro文件帮助文档 按windows键&#xf…

1_opencv3环境搭建与测试

之前2020年5月写过一次&#xff0c;时隔3年多&#xff0c;有机会再重新写一次。相比之前&#xff0c;应该是有一点儿进步的。之前是使用默认安装路径&#xff0c;所以无需配置共享库的搜索路径。这次是自定义安装路径&#xff0c;略有区别。随着写程序的时间增长&#xff0c;编…

LeetCode Python - 14.最长公共前缀

目录 题目答案运行结果 题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff…

react 【二】 setState/react性能优化/dom操作

文章目录 1、setState1.1 setState的三种用法1.2 setState为什么是异步 2、React性能优化2.1 react的更新机制2.2 如何优化性能2.2.1 shouldComponentUpdate2.2.2 PureComponent2.2.3 memo 3、不可变数据的力量4、dom操作4.1 通过ref获取dom的三种方式4.2 执行子组件的方法&…

关于node与node-sass那些事

昨晚找了之前的一个项目想要复习下&#xff0c;结果npm i报错&#xff0c;大致意思就是noda-sass的版本和node的对不上&#xff0c;那怎么办呢&#xff1a; 1.换node版本&#xff0c;那好吧&#xff0c;首先要明白&#xff0c;对应的版本关系 2.然后我开始用nvm换node版本&am…

猫头虎分享: 探索软件系统架构的革新之路

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【AI视野·今日Sound 声学论文速览 第四十九期】Wed, 17 Jan 2024

AI视野今日CS.Sound 声学论文速览 Wed, 17 Jan 2024 Totally 23 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers From Coarse to Fine: Efficient Training for Audio Spectrogram Transformers Authors Jiu Feng, Mehmet Hamza Erol, Joon Son Chung,…

[FFmpeg学习]从视频中获取图片

从视频中获取图片是一个比较直观的例子&#xff0c;这里从一个基础的例子来查看FFmpeg相关api的使用&#xff0c;从mp4文件中获取一帧图像&#xff0c;保存为jpeg格式图片&#xff0c;mp4文件比较好准备&#xff0c;一般手机录屏文件就是mp4格式。 原理还是比较清楚&#xff0…

六、Redis之数据持久化及高频面试题

6.1 数据持久化 官网文档地址&#xff1a;https://redis.io/docs/manual/persistence/ Redis提供了主要提供了 2 种不同形式的持久化方式&#xff1a; RDB&#xff08;Redis数据库&#xff09;&#xff1a;RDB 持久性以指定的时间间隔执行数据集的时间点快照。AOF&#xff0…

车载诊断协议DoIP系列 —— DoIP会话模式(安全与非安全)

车载诊断协议DoIP系列 —— DoIP会话模式(安全与非安全) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖…

LLVM的中间表示

概括 选择编译器IR的决策很重要&#xff0c;它决定了优化过程将拥有多少信息来使代码运行得更快。 一方面非常高层级的IR允许优化器轻松地提取原始源代码的相关信息。 另一方面&#xff0c;低层的IR更加贴近目标机器&#xff0c;这样编译器更容易为特定的硬件生成相应的代码…

MyBatis篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、模糊查询 like 语句该怎么写?二、如何获取自动生成的(主)键值三、在 mapper 中如何传递多个参数?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

Golang中的fmt包:格式化输入输出的利器

Golang中的fmt包&#xff1a;格式化输入输出的利器 在软件开发的世界里&#xff0c;fmt包就像是一位忠实的伙伴&#xff0c;始终陪伴着开发人员。它简化了格式化输入输出的过程&#xff0c;让打印和扫描数据变得轻松自如。无论是向控制台输出简单的消息&#xff0c;还是处理复杂…

零基础学Python(10)— 序列通用操作

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就带大家认识下Python语言中常见的序列通用操作&#xff01;~&#x1f308; 目录 &#x1f680;1.索引 &#x1f680;2.切片 &#x1f680;3.序列加法 &#x1f680;4.序列乘法 &#x1f680;5.检查某个元素是…