• QWidget核心属性(二)


    windowOpacity

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

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

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

    注意:
    该属性与windowTitle、windowIcon属性一样只针对顶层窗口起效,对于普通控件不生效;

    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会自动消失

    也有toolTip接口来获取toolTip,但是一般这个都是给用户看的,代码中一般不回获取;

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

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

    在这里插入图片描述

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

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

    focusPolicy

    设置控件获取到焦点的“策略”,比如某个控件能否用鼠标选中或者是否可以通过Tab键选中

    焦点:
    所谓 “焦点” , 指的就是能选中这个元素. 接下来的操作 (⽐如键盘操作), 就都是针对该焦点元素进⾏的了. 这个对于 输⼊框, 单选框, 复选框等控件⾮常有⽤的.
    eg:
    在这里插入图片描述
    当我光标选中Bing的搜索框的时候,我就可以向搜索框中进行写入,而当我光标点击其它地方,那么这时候,无论我输入什么东西,都不会被Bing搜索框接收:
    在这里插入图片描述

    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 (Cascading Style Sheets 层叠样式表) 本⾝属于⽹⻚前端技术. 主要就是⽤来描述界⾯的样式.
    所谓 “样式”, 包括不限于 ⼤⼩, 位置, 颜⾊, 间距, 字体, 背景, 边框等.
    我们平时看到的丰富多彩的⽹⻚, 就都会⽤到⼤量的 CSS.
    Qt 虽然是做 GUI 开发, 但实际上和 ⽹⻚前端 有很多异曲同⼯之处. 因此 Qt 也引⼊了对于 CSS的⽀持.

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

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

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

    此处的语法格式同 CSS, 使⽤键值对的⽅式设置样式. 其中键和值之间使⽤ : 分割. 键值对之间使⽤
    ; 分割.
    另外, Qt Designer 只能对样式的基本格式进⾏校验, 不能检测出哪些样式不被 Qt ⽀持. ⽐如 text-
    align: center 这样的⽂本居中操作, 就⽆法⽀持.

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

  • 相关阅读:
    大数据专业毕业后职业前景如何?
    linux 安装下载conda并创建虚拟环境
    SpringCloud原理-OpenFeign篇(二、OpenFeign包扫描和FeignClient的注册原理)
    在两个进程间进行通信的小demo
    基于Java电动车上牌管理系统计实现(源码+lw+部署文档+讲解等)
    路径几何图形的各种线段
    开发知识点-Ruby
    git 指令大全从基本开始复盘
    Webpack 5 超详细解读(六)
    侯捷C++复现 :explicit在构造函数中
  • 原文地址:https://blog.csdn.net/qq_62106937/article/details/138159232