标签控件,可以展示图像和文本
可以展示gif图
继承QFrame
目录
1.7.1 设置 setScaledContents(bool)
1.8.1 设置 setOpenExternalLinks()
1.9.1 设置 setTextInteractionFlags()
1.9.2 获取 textInteractionFlags()
1.10.1 选中指定区域文本 setSelection(int start, int length)
1.10.2 获取是否选中的文本 hasSelectedText()
1.10.4 获取开始位置 selectionStart()
3.2 鼠标放在超链接上或移开时触发 lineHovered()
1 功能作用
1.1 构造函数
其中flags是展示样式,这个我们很少用
除去flags我们有两种方法写构造函数
- 直接写父对象
- 在父对象前添加一个默认的字符串内容
由于我们之前总是用直接写父对象的方法,我们这次就再传一个文本进去
1.2 对齐
为了方便看,我们把控件搞大一点,然后设置一个背景颜色
1.2.1 设置 setAlignment()
我们依照可以选的参数每个搞出一遍效果
- Qt.AlignAbsolute
- Qt.AlignBaseline
- Qt.AlignBottom
- Qt.AlignCenter
- Qt.AlignHCenter
- Qt.AlignHorizontal_Mask
- Qt.AlignJustify
- Qt.AlignLeading
- Qt.AlignLeft
- Qt.AlignRight
- Qt.AlignTop
- Qt.AlignTrailing
- Qt.AlignVCenter
- Qt.AlignVertical_Mask
以上的我找到的Qt库中所有的可选参数,有的是配合使用的,这个不长用,就不多做介绍了
我们显示一下调用的方法
1.2.2 获取 alignment()
1.3 缩进
我们现在的窗口是这样的
1.3.1 获取 indent()
直接进行获取返回值是-1
1.3.2 设置 setIndent()
我们现在设置为20
这里给的参数是像素值
- 文本缩进只在左侧或右侧生效
1.4 边距
我们现在的窗口是这样的
1.4.1 获取 margin()
如果不进行设置,默认的边距是0
1.4.2 设置 setMargin()
我们现在设置边距为50
- 这个边距设置完之后是上下左右都有的
1.5 文本格式
上面两个函数涉及到Qt.TextFormat这个对象参数,它可选的值如下
- 0 - Qt.PlainText 普通文本
- 1 - Qt.RichText 富文本
- 2 - Qt.AutoText 自动判断
我们现在设置一个html字符串作为label的内容
1.5.1 获取 textFormat()
默认情况下为自动获取
1.5.2 设置 setTextFormat()
现在我们将状态调整到纯文本
如果搞成富文本就是自动识别的那样,就不在展示了
1.6 绑定
我们可以将标签与其他的控件进行绑定,当标签获取到快捷键信号时,被绑定的控件也会收到同样的快捷键信号
比如我们的登陆界面
当单行文本编辑器前方的标签收到信号后,后面的单行文本编辑器同样会收到信号
我们这样测试,我们给一个标签绑定快捷键,之后搞两个单行文本编辑器,之后再将其中一个文本编辑器与标签绑定
1.6.1 设置 setBuddy()
此时我们的le1并没有设置快捷键,现在我们将label与le1绑定
- le1是第二行文本编辑器
运行后焦点是默认在le上的
我们现在按下alt+s
焦点转到了第二行
1.6.2 获取 buddy()
1.7 内容缩放
- 仅适用于图片
我们向其中放一张图片
运行之后是这样的
1.7.1 设置 setScaledContents(bool)
1.7.2 获取 hasScaledContents()
1.8 外部链接
我们首先搞一个链接作为label的内容
此时我们点这个链接是打不开的
1.8.1 设置 setOpenExternalLinks()
现在我们点这个链接是可以打开了
1.8.2 获取 openExternalLinks()
1.9 文本交互标志
这两个函数涉及到一个变量 Qt.TextInteractionFlags,可选的值如下
- Qt.NoTextInteraction 不与文本进行交互
- Qt.TextSelectableByMouse 可被鼠标选中
- Qt.TextSelectableByKeyboard 可使用文本光标操作
- Qt.LinksAccessibleByMouse 可用鼠标激活链接
- Qt.LinksAccessibleByKeyboard 可用键盘激活链接
- Qt.TextEditable 文本可编辑
- Qt.TextEditorInteraction 可用用光标文本操作,可用鼠标选中,可编辑
- Qt.TextBrowserInteraction 可被鼠标选中,可用键盘或鼠标激活链接
我们设置一个带链接的富文本作为标签的内容
此时我将鼠标移动到baidu上鼠标会显示为食指选中状态
1.9.1 设置 setTextInteractionFlags()
- Qt.NoTextInteraction
这个时候是无法用鼠标选中的,而且移动将鼠标移动到文本上鼠标不会变为食指选中状态
- Qt.TextSelectableByMouse
可以用鼠标选中内容,也可以选择复制或全选
- Qt.TextSelectableByKeyboard
可以看到一个光标,按左右键可以改变光标位置,在移动光标时按住shift可选中区域
- Qt.LinksAccessibleByMouse
设置与没设置没感觉有什么变化
- Qt.LinksAccessibleByKeyboard
这个如果单独设置我用鼠标点链接都点不开
我们现在加入光标控制
当我给所有内容都选中后,然后点击回车,会跳出网页
- Qt.TextEditable
单独放这个没有作用,我们需要将可使用文本光标操作一起放进去才有效果
此时我们可编辑内容
- Qt.TextEditorInteraction
相当于Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard | Qt.TextEditable
可用用光标文本操作,可用鼠标选中,可编辑
- Qt.TextBrowserInteraction
相当于以上三个功能的结合,可用鼠标选中,可用鼠标进入,可用键盘进入
运行之后我们需要用鼠标点一下进入链接,之后我们也可以按键盘上的enter进入链接,或者一开始就全部选中文本,然后点enter也可以进入
1.9.2 获取 textInteractionFlags()
1.10 选中文本
必须在选中状态下才能选中,我们搞一个hello以供选中
1.10.1 选中指定区域文本 setSelection(int start, int length)
第一个参数为开始位数,第二个参数为选中长度
1.10.2 获取是否选中的文本 hasSelectedText()
我们搞一个按钮效果更加明显
此时我们选中了两个字符,然后点击一下按钮
现在我们没选中任何字符,然后点一下按钮
1.10.3 获取选中的文本 selectedText()
我们更改一下槽函数
此时我们选中he,然后点击一下按钮
1.10.4 获取开始位置 selectionStart()
这个方法由于焦点的问题,我们就不能通过按钮搞了
1.11 单词换行
我们现在放一段长句子作为标签的内容
运行之后是这样的
1.11.1 设置 setWordWrap()
现在运行之后是这样的
1.11.2 获取 wordWrap()
2 内容操作
2.1 文本
2.1.1 设置 setText()
- 如果是富文本的话默认会自动识别
2.1.2 获取 text()
2.2 数值 setNum()
可以设置整形数据也可以设置浮点型数据
经测试,如果数字的位数一多就不能显示小数了
2.3 图像
2.3.1 设置画的图像 setPicture()
2.3.2 设置存储的图像 setPixmap()
2.4 动图
2.4.1 设置动图 setMovie()
由于gif图太大了,我调整了一下动图尺寸
在每次设置完动图之后,如果想让它显示,需要在下面加一个start
现在我们就看到了这一个动图
2.4.2 获取动图 movie()
2.4.3 设置动图尺寸 setScaledSize()
我们在操作之初就设置了,现在我们把它取消掉
取消掉之后是这一个样子的
现在我们加上
2.4.4 暂停动图 setPaused()
我们搞一个按钮效果更加明显
一开始运行后动图是运动的
现在我们点一下按钮
此时动图不动了
2.4.5 设置动图速度 setSpeed()
我们此时设置动图为50倍速
运行后发现动图在快速的播放
2.4.6 开始动图 start()
我们如果想让动图显示在标签中,必须加上start()
在停止后再加上start()也会开始动,但此时是从头开始运动,而不是暂停
2.4.7 停止动图 stop()
我们把它放在槽函数中
按了一下按钮,动图停止播放
2.5 清空 clear()
无论放什么内容,clear()之后都会消失
我们搞一个按钮,把clear()放在槽函数中
此时我在label上放了一个动图
点击按钮之后,动图消失
3 信号
这两个信号都是关于超链接的信号
我们首先将链接放在label的内容中,我们就不设置可打开网页了
3.1 超链接被激活时触发 linkActivated()
运行之后点击一下链接
它会传递一个网址的变量
如果设置了可打开网页,这个信号则不会被触发
3.2 鼠标放在超链接上或移开时触发 lineHovered()
运行之后我们将鼠标放在超链接上,然后移开
它在放上去的时候会传递一个网址变量,离开的时候不会传递
如果设置了变量,最开始的时候只会触发一次信号