0
点赞
收藏
分享

微信扫一扫

高效便捷!解锁阿里云跨账号专线互联的全新实施方案

爱做梦的夏夏 2024-04-25 阅读 8

QWidget核心属性 二

windowOpacity

API说明
windowOpacity()获取控件的不透明数值。返回float,取值为0.0 ~ 1.0 ,其中0.0表示全透明,1.0表示完全不透明.
setWindowOpacity(float n)设置控件的不透明度

eg:
现在两个按钮控件,一个Add按钮,一个Sub按钮,当用户点击Add按钮过后可以增加窗口的透明度;当用户点击Sub按钮过后可以降低窗口的透明度;

具体实现如下:
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述

cursor

API说明
cursor()获取到当前控件的cursor属性,返回QCursor对象;当鼠标悬停在该控件上时,就会显示出对应的形状
setCursor(const QCursor&)设置该控件上的光标的形状,仅在鼠标停留在该控件上时生效
QGUIApplication::setOverrideCursor(const QCursor&)设置全局光标的形状,对整个程序中的控件都生效,会覆盖setCursor设置的光标

eg1:
通过图图形化界面创建一个按钮,当光标放在按钮控件上时,就会改变光标的形状,当光标退出按钮控件的区域时,就恢复原样:
在这里插入图片描述
运行结果:

在这里插入图片描述
通过代码来进行设置:
在这里插入图片描述
运行结果如下:
在这里插入图片描述
实际上Qt内置了很多宏来定义光标的形状,我们只需要利用这些宏来构造QCursor对象,然后在调用setCursor来设置控件的形状即可,当然,我们也可以使用图片自定义光标的形状:
在这里插入图片描述
接下来,我们将把这个图设置为光标:

  1. 创建qrc文件,将图片添加进去:
    在这里插入图片描述
  2. 编写代码
    在这里插入图片描述
  3. 运行结果:
    在这里插入图片描述

font

API说明
font()获取到当前控件的字体信息,返回QFont对象
setFont(const QFont&)设置当前控件的字体信息

关于QFont的字段:

字段说明
family字体家族,eg:“楷体”、“宋体”、“微软雅黑”等
pointSize字体大小
weight字体粗细,以数值方式表示粗细程度,取值范围是[0,99],数值越大,越粗
bold是否加粗,设置为true,相当于weight为75;设置为false,相当于weight设置为50
italic是否倾斜
underline是否自带下划线
strikeOut是否带删除线

使用图形化界面创建一个文本:
在这里插入图片描述
运行结果:
在这里插入图片描述
使用图形化创建有一个好处就是,可以随时预览我们设计的结果,但是缺点也很明显就是,只能静态预览,如果我想们想要做到字体随着代码的运行而改变,那么通过代码创建就不失为一个很好的选择;
在这里插入图片描述
代码运行结果:
在这里插入图片描述

toolTip

API说明
setToolTip设置toolTip,鼠标悬停在控件上时又提示说明
setToolTipDuring设置toolTip的提示时间,单位ms,时间到过后,toolTip会自动消失

eg:
在窗口上设置两个按钮控件,一i个yes按钮,一个no按钮;
当我们将光标悬停在yes按钮上时,会提示"这是一个yes按钮";
当我们将光标悬停在no按钮上时,会提示"这是一个no按钮";

在这里插入图片描述
运行结果如下:

在这里插入图片描述

上面的方式,是通过图形化的方式来创建的,接下来我们通过代码的方式来创建一手:
具体代码如下:
在这里插入图片描述

运行结果:
在这里插入图片描述

focusPolicy

API说明
focusPolicy()获取当前控件的focusPolicy,返回Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy policy)设置当前控件的focusPolicy

Qt::FocusPolicy是一个枚举类型,枚举值有:
Qt::NoFocus//表示控件不回接收键盘焦点
Qt::TabFocus//控件可以通过Tab键来接受焦点;
Qt::ClickFocus//控件可以通过鼠标点击来接收焦点;
Qt::StrongFocus//控件可以通过Tab键和ClickFocus键来接收焦点(默认值)
Qt::WheelFocus//类似于Qt::StrongFocus,同时控件也可以通过鼠标滚轮获取焦点(一般少用)

eg:
在窗口上分别创建4个文本框,然后分别演示Qt::NoFocus、Qt::TabFocus、Qt::ClickFocus、Qt::StrongFocus;

在这里插入图片描述
现在是正常情况,鼠标点击和Tab键都可以在输入框之间来回切换;
接着我们将文本框1的FocusPolicy类型,设置为NoFocus来看看:

在这里插入图片描述
通过实验,我们发现,将文本框1的FocusPolicy设置为NoFocus过后,就无法在使用鼠标或者Tab键来切换文本框1了;
接着,我们将文本框2的FocusPolicy设置为TabFocus:
在这里插入图片描述
通过实验我们发现,将文本框2的FocusPolicy类型设置为TabFocus过后,文本框2的切换只能通过Tab键来完成,鼠标点击没有反应;
接着我们来将文本框3的FocusPolicy类型设置为:ClickFocus:
在这里插入图片描述
通过实验,我们发现当把文本框3的FocusPolicy属性设置为ClickPolicy过后,切换到文本3只能通过鼠标点击,Tab键无法进行切换;
最后,我们来将文本框4的FocusPolicy类型设置为StrongPolicy:
在这里插入图片描述
通过实验结果,我们发现将文本框4的FocusPolicy属性设置为StrongPolicy过后,与没设置之前效果一样,都可以通过鼠标点击和Tab键来进行切换;

styleSheet

通过 CSS 设置 widget 的样式.

CSS 中可以设置的样式属性⾮常多. 基于这些属性 Qt 只能⽀持其中⼀部分, 称为 QSS (Qt Style Sheet). 具体的⽀持情况可以参考 Qt ⽂档中 “Qt Style Sheets Reference” 章节.
eg1:
在窗口上创建一个文本,通过QSS来设置这个文本的样式:

  1. 在界面上创建一个Label
    在这里插入图片描述
  2. 打开styleSheet窗口在这里插入图片描述
  3. 接着我们会得到一个如下窗口:
    3
  4. 编辑右侧的 styleSheet 属性, 设置样式

在这里插入图片描述
5. 运行结果:
在这里插入图片描述

eg2:
实现切换夜间模式.
设计思路:
在界面上放3个控件,一个label控件,一个白天切换按钮,一个黑夜切换按钮;
当我们点击白天就坏将整个界面切换到白天,当我么点击黑夜按钮,就会将整个界面切换到黑暗;
白天: 文字为黑色,背景为白色;
黑夜: 文字为白色,背景为黑色;
具体代码:
在这里插入图片描述
运行结果:
在这里插入图片描述
嗯,不错的,运行结果是符合预期的,但是有一点小瑕疵就是,白天模式和原始模式是不匹配的,按理来说,原始模式应该就是白天模式,白天模式就是原始模式,但是白天模式更白,原始模式似乎偏黄一点,这是为什么?主要是因为,刚开始的时候我们还没有点击任何按钮,因此我们的夜间模式或黑夜模式都不会神效,因此界面就是初始化颜色,当我们点击黑夜或者白天按钮过后整个界面也就会发生变化!为此,我们只需要将白天模式的背景颜色调成和原始状态一样就好了:
在这里插入图片描述

举报

相关推荐

0 条评论