文章目录
windowlcon 属性

windowlcon 表示 一个窗口的图标
( 只能针对 顶层窗口使用 )
windowlcon() 表示 获取到控件的窗口图标 返回 QIcon 对象 (QIcon表示 一个图标)
setwindowlcon(const Qlcon& icon) 设置控件的窗口图标
想要设置 图标 需要先准备一张图片
并找到对应存放的位置
之前推荐使用堆上创建对象 是因为要确保当前控件的生命周期是足够的 以及 要通过 Qt对象树 来释放对象
QIcon 自身是一个比较小的对象
创建出来的目的 是要设置到某个 QWidget 里面
QIcon 对象本身释放不释放 不影响图标最终的显示
Qlcon 不支持对象树 无法给他执行父对象
所以更 推荐在栈上创建

在构造函数中指定图片的路径
通过 setwindowlcon 函数 将 icon 对象传递进去
运行程序后发现 窗口图标 变为 玫瑰花图片

如果对应的路径写错 就导致找不到该图片 从而继续使用系统自带的图片
所以 相比于绝对路径的方式 使用 相对路径 是更好的
相对路径 是以给定目录为基准 以 . 或者… 的方式开头
假设基准目录为 D:/
给定相对路径 ./th.jpg -> 在基准目录(D:/)直接找 th.jpg
Qt中提供 了 qrc 机制 (就可以从根本生解决问题)
1.确保图片所在路径在目标用户机器上存在
2.确保图片不会被用户搞没了
给Qt项目引入一个额外的xml文件 (后缀名使用 .qrc表示)
在这个xml中把要使用图片资源导入进来 并且在xml中进行记录
Qt在编译项目时 就会根据qrc中描述的图片信息 找到图片内容 并且提取出图片的二进制数据
把这些二进制数据 转成 C++代码 最终编译到exe中
qrc缺点: 无法导入太大的资源文件
使用 qrc文件管理资源
qrc的使用方式
在项目中创建 qrc文件
创建 qrc文件(确保名字不带中文 和 特殊符号)

选择 Qt 中的 Qt Resouce File 点击选择

最终生成当前 qrc 文件 以及界面
把图片 导入到qrc 文件中
(1) 先创建一个前缀 (prefix)

可以把 前缀 理解成 虚拟的目录
这个目录没有在你的电脑上真实存在 是Qt自己抽象出来的
(为了方便 Qt代码中访问到这个图片 Qt就自己抽象出了 虚拟的目录)

点击 Add Prefix 将前缀 名字修改为 /
(2) 把刚才使用的图片导入到资源文件中
Add Files 在创建 Add Prefix 之前是禁用的
创建好 prefix 之后就可以使用了
添加的文件 就是添加到 prefix 下面的

点击 Add Files 会弹出对话框 得到的目录就是当前代码所在的目录
导入图片时 需要确保导入的图片 必须在 resource.qrc 文件的同级目录 或者 同级目录的子目录

所以就可以把 处于D盘的 th.jpg 图片 拷贝到 当前目录中

此时导入成功

当代码中需要访问 qrc中管理的文件时 就需要在路径上带有 : 前缀
由于 创建的前缀为 / 图片文件名为 th.jpg
即 : / th.jpg
windowOpacity属性
windowOpacity 属性 可以设置 当前窗口的透明度
windowOpacity() 获取到控件的不透明值 返回float 取值为 0.0 -> 1.0 其中 0.0 表示 全透明 1.0 表示 完全不透明
setwindowOpacity( float n) 设置控件的不透明值

设置两个 按钮 表示 增加透明度 和 减少透明度

通过 windowOpacity 获取到 Widget 的透明度 在判断是否在 0.0 到 1.0 之间
增加透明度 则 -0.1 减少透明度 则 +0.1
再通过 setWindowOpacity 函数 设置 透明度

当不断增加透明度时 发现 整个对话框是可以透过去的
cursor 属性
cursor —— 修改鼠标光标的样式
cursor ()
获取到当前widget 的cursor 属性 返回 cursor对象 当鼠标悬停在该 widget上时 就会显示对应的形状
setCursor(const QCursor& cursor)
设置该widget光标的形状 仅在鼠标停留在该widget上时生效
QGuiApplication::setOverideCursor( const QCursor&cursor)
设置全局光标的形状(程序内的全局) 对整个程序的所有widget都会生效 覆盖上面的setCursor设置的内容

在 Qt designer中 右侧 存在 cursor 即 箭头

其中 包含 很多种 箭头的形状

Qt::WaitCursor 表示等待状态的图标 (转圈的光标)
再通过 setCursor 函数 设置 Widget的光标为等待状态
自定义图片设置光标

先准备一张图片 把图导入到项目中(qrc管理)
在代码中 访问到这个图片 基于这个图片构造出光标对象并设置

通过创建q rc文件 将th.jpg 图片 添加到其中

QPixmap 表示一个图片
pixmap 对象中 存在 scaled 方法 可以对图片进行缩放
默认情况下 鼠标点击时 相当于图片的左上角在进行点击
以鼠标左上角为0,0原点 找到 10,10 这个位置作为鼠标真正点击的位置

运行程序后 发现 光标变成了 篮球
font 属性
font 是一组属性的集合 表示和字体相关的一系列内容
font() 获取当前widget的字体信息 返回QFont对象
setFont(const QFont & font) 设置当前widget的字体信息

在 Qt designer中 font属性 有 字体族 粗体 斜体 等
Qt Designer 能够对界面的属性设置支持 实时预览
( 改属性后 立即显示出来)

将 字体改为 仿宋 勾选 粗体 下划线 删除线
通过属性编辑 的方式 虽然可以快速方便的修改文字相关的属性 但是不够灵活
若程序运行过程中 需要修改文字相关的属性 就需要通过代码来操作

setFaily 函数 表示 字体家族
setPixelSize 函数 表示 字体大小
setBold 函数 表示 是否加粗
setItalic 函数 表示 是否倾斜
setUnderline 函数 表示 是否带有下划线
serStrikeOut 函数 表示 是否带有删除线

运行程序后 与上述手动展示效果相同
toolTip属性
toolTip作用: 当把鼠标 悬停到这个控件上的时候 就能弹出一个提示
setToolTip
设置toolTip 鼠标悬停在该widget上时会有提示说明 (设置提示的内容)
setToolTipDuring
设置toolTip提示的时间 单位ms 时间到后toolTip自动消失 (设置提示的时间)

使用 setToolTip 函数 设置显示等待内容
再通过 setToolTipDuration 函数 设置显示的时间
msec 表示 毫秒
所以 3000 毫秒 表示 3秒 7000毫秒 表示 7秒

运行程序后 将鼠标放到对应的按钮上 就会提示内容
这是一个yes按钮 会提示 3秒
这是一个 no 按钮 会提示 7秒
focusPolicy 属性
设置控件获取到焦点的策略
如: 界面上有一个输入框 此时必须选中这个输入框 接下来键盘按键才会输入输入框中
若选中其他的控件 或 窗口 此时键盘的输入就不会进入到这个输入框
当在浏览器上点击输入框后 键盘按键输入到 输入框中

当点击到上面的输入框时 就不会输入到 下面的输入框中
一个控件获取到焦点 主要有两种方式:
1.鼠标点击
2.键盘的tab
focusPolicy()
获取该widget的 focusPolicy 返回 Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy policy)
设置widget的 focusPolicy
Qt::FocusPolicy 是一个枚举类型 取值如下:
NoFocus —— 控件不会接收键盘焦点
TabFocus ——控件可以通过Tab键接收焦点
ClickFocus ——控件在鼠标点击时接收焦点
StrongFocus ——控件可以通过Tab键和鼠标点击接收焦点(默认值)

在 Qt Designer中 存在 focusPolicy 选项 默认为 StrongFocus (可以通过 tab 和 鼠标点击接受)

输入 tab 按键 就从第一个输入框 切换到 第二个输入框

将第二个输入框 调整为 NoFocus (不会接收键盘焦点)

无论是使用 tab 想要切换到 第二个输入框 还是 使用鼠标点击 发现都不好使
stylesheet属性
通过CSS设置widget的样式 (描述界面具体样子)
(CSS 称为 层叠样式表 进行网页开发时 设置网页样式的方式)

点击… 后 就会弹出输入框 在输入框就可以输入样式

右击 点击 改变样式表 也可以改变样式

将字体设置为 微软雅黑 字体大小为30像素
字体类型为 斜体 字体颜色为绿色

将可以把对应的label标签中的内容 改变

将上面的大块输入框 作为 plainTextEdit
日间模式按钮 作为 pushButton_light
夜间模式按钮作为 pushButton_dark
当点击日间模式 按钮时

过 setStyleSheet 函数 设置背景颜色
将对应的widget窗口 设置为 黑色
对应的上面输入框 plainTextEdit 颜色为 白色 字体颜色为黑色
对应的 日间模式的按钮 pushButton_light 设置为 黑色 夜间模式的按钮 pushButton_dark 设置为 黑色
当点击夜间模式按钮时

将对应的widget窗口 设置为 黑色
对应的上面输入框 plainTextEdit 颜色为 黑色 字体颜色为白色
对应的 日间模式的按钮 pushButton_light 设置为 白色 夜间模式的按钮 pushButton_dark 设置为 白色

程序运行后 默认在日间模式

点击夜间模式后 由日间切换到夜间