005 Qt常用控件Qwidget_下

news/2024/12/18 0:03:12/

文章目录

  • 前言
    • windowOpacity属性
    • cursor属性
    • font属性
    • toolTip属性
    • focuspolicy属性
    • styleSheet属性
  • 小结

前言

本文将会向你分享Qwidget的常见属性

windowOpacity属性

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

① 在界面上拖放两个按钮, 分别⽤来增加不透明度和减少不透明度.
objectName 分别为 pushButton_add 和 pushButton_sub
在这里插入图片描述
②编写两个按钮的槽函数

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_add_clicked()
{float opacity = this->windowOpacity();if(opacity >= 1.0){return;}qDebug() << opacity;opacity += 0.1;this->setWindowOpacity(opacity);
}void Widget::on_pushButton_sub_clicked()
{float opacity = this->windowOpacity();if(opacity <= 0.0){return;}qDebug() << opacity;opacity -= 0.1;this->setWindowOpacity(opacity);
}

③观察现象
执行程序,点了几下 - ,窗口就变得透明一些,在控制台也能观察道opacity数值的变化
注意:观察控制台,发现第一个数值为0.89… C++ 中 float 类型遵守 IEEE 754 标准, 因此在进行运算的时候会有⼀定的精度误差. 因此 1 - 0.1 的数值并非是 0.9
在这里插入图片描述

cursor属性

API说明
cursor()获取到当前 widget 的 cursor 属性, 返回 QCursor 对象.当⿏标悬停在该 widget 上时, 就会显示出对应的形状.
setCursor(const QCursor& cursor)设置该 widget 光标的形状. 仅在⿏标停留在widget 上时生效.
QGuiApplication::setOverrideCursor(const QCursor& cursor)设置全局光标的形状. 对整个程序中的所有 widget 都会⽣效. 覆盖上⾯的 setCursor 设置的内容.

Qwidget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QCursor cursor(Qt::WaitCursor);this->setCursor(cursor);
}Widget::~Widget()
{delete ui;
}

运行程序后,当光标移动到界面就会变成沙漏状,截图无法截到光标,请自行验证
在这里插入图片描述
Ctrl + 左键 点击 Qt::WaitCursor 跳转到源码即可看到其中列出了多种光标样式
在这里插入图片描述
接下来演示自定义光标的过程
与之前一样,创建一个qrc资源,添加前缀为 / ,并添加图片资源
Qwidget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//访问到图片资源QPixmap pixmap(":/MerryChristmas");pixmap = pixmap.scaled(100, 100);//构造光标对象QCursor cursor(pixmap, 10, 10);//将光标设置进去this->setCursor(cursor);
}Widget::~Widget()
{delete ui;
}

截屏依旧观察不到光标结果,请自行验证

font属性

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

关于QFont

API说明
family字体家族. ⽐如 “楷体”, “宋体”, “微软雅⿊” 等.
pointSize字体⼤⼩.
weight获取当前 widget 的字体信息. 返回 QFont 对象字体粗细. 以数值⽅式表⽰粗细程度取值范围为 [0, 99], 数值越⼤, 越粗.
setFont(const QFont& font)设置当前 widget 的字体信息.
bold是否加粗. 设置为 true, 相当于 weight 为 75. 设置为 false 相当于weight 为 50.
italic是否倾斜.
underline是否带有下划线.
strikeOut是否带有删除线.

代码示例

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setText("今天天气真好~~");//创建字体对象QFont font;font.setFamily("微软雅黑");font.setPixelSize(50);font.setBold(true);font.setItalic(true);font.setUnderline(true);font.setStrikeOut(true);//把font对象设置到label中label->setFont(font);
}Widget::~Widget()
{delete ui;
}

运行,观察效果
在这里插入图片描述
当然你也可以不自己创建一个label对象,使用拖拽方式,然后在右侧的属性编辑区,设置该label的font相关属性
在这里插入图片描述

toolTip属性

API说明
setToolTip设置 toolTip.⿏标悬停在该 widget 上时会有提⽰说明.
setToolTipDuring设置 toolTip 提⽰的时间. 单位 ms.时间到后 toolTip ⾃动消失.

代码示例
①在界面上拖放两个按钮 objectName 设置为 pushButton_yes 和 pushButton_no
在这里插入图片描述

②编写widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton_yes->setToolTip("这个是 yes 按钮");ui->pushButton_yes->setToolTipDuration(3000);ui->pushButton_no->setToolTip("这个是 no 按钮");ui->pushButton_no->setToolTipDuration(10000);
}Widget::~Widget()
{delete ui;
}

③运行程序,观察结果
在这里插入图片描述

focuspolicy属性

API说明
focusPolicy()获取该 widget 的 focusPolicy, 返回 Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy policy)设置 widget 的 focusPolicy.

Qt::FocusPolicy 是⼀个枚举类型. 取值如下
• Qt::NoFocus :控件不会接收键盘焦点
• Qt::TabFocus :控件可以通过Tab键接收焦点
• Qt::ClickFocus :控件在⿏标点击时接收焦点
• Qt::StrongFocus :控件可以通过Tab键和⿏标点击接收焦点 (默认值)
• Qt::WheelFocus : 类似于 Qt::StrongFocus , 同时控件也通过⿏标滚轮获取到焦点 (新增
的选项, ⼀般很少使⽤).

①在界面上创建四个单行输入框Line Edit
在这里插入图片描述
②并修改四个输入框的focuspolicy属性分别为NoFocus、TabFocus、ClickFocus、StrongFocus
在这里插入图片描述
③运行程序,第一个输入框不会被 tab / 鼠标左键选中,第⼆个输⼊框只能通过 tab 选中, 无法通过鼠标选中,改第三个输⼊框只能通过 鼠标 选中, 无法通过 tab 选中,第四个输⼊框 tab / 鼠标左键都可以选中
在这里插入图片描述

styleSheet属性

通过 CSS 设置 widget 的样式

Qt 虽然是做 GUI 开发, 但实际上和 网页 前端 有很多异曲同⼯之处. 因此 Qt 也引⼊了对于 CSS 的⽀持
CSS 中可以设置的样式属性⾮常多. 基于这些属性 Qt 只能⽀持其中⼀部分, 称为 QSS (Qt Style Sheet). 具体的⽀持情况可以参考 Qt ⽂档中 “Qt Style Sheets Reference” 章节.

① 在界⾯上创建 label
在这里插入图片描述
②编辑右侧的的 styleSheet 属性, 设置样式
在这里插入图片描述
在这里插入图片描述
编辑完成样式之后, 可以看到在 Qt Designer 中能够实时预览出效果
在这里插入图片描述
示例二
①拖拽一个Text Edit与两个按钮,并将名为日间模式和夜间模式的两个按钮的objectname分别修改为pushButton_light与pushButton_light
在这里插入图片描述
②编写对应的槽函数

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}void Widget::on_pushButton_light_clicked()
{this->setStyleSheet("background-color: #f3f3f3");ui->textEdit->setStyleSheet("background-color: #fff; color: #000;");ui->pushButton_light->setStyleSheet("color: #000");ui->pushButton_dark->setStyleSheet("color: #000");
}void Widget::on_pushButton_dark_clicked()
{this->setStyleSheet("background-color: #333");ui->textEdit->setStyleSheet("background-color: #333; color: #fff;");ui->pushButton_light->setStyleSheet("color: #fff");ui->pushButton_dark->setStyleSheet("color: #fff");
}Widget::~Widget()
{delete ui;
}

③运行并观察结果,如图是点击了一次夜间模式的界面
在这里插入图片描述

小结

本文所要分享的内容就到这里啦,如果本文存在疏漏或错误的地方,还请您能够指出


http://www.ppmy.cn/news/1555986.html

相关文章

《深入理解 Java 中的 ImmutableList》

一、引言 在 Java 编程中&#xff0c;数据结构的选择对于程序的性能、可读性和可维护性至关重要。Java 中的ImmutableList是一种不可变的列表类型&#xff0c;它在很多场景下都有着独特的优势。本文将深入探讨 Java 中的ImmutableList&#xff0c;包括其概念、特点、用法以及与…

Jenkins 启动 程序 退出后 被杀死问题

参考 Spawning Processes From Build (jenkins.io) 解决jenkins脚本启动项目后进程被杀死_jenkins杀进程-CSDN博客

Uniapp跟原生android插件交互发信息(二)

一、背景 在uni-app开发过程中&#xff0c;有时候会遇到uni-app插件或者提供的api对硬件操作不太友好&#xff0c;需要使用原生Android开发 对应模块&#xff0c;为了使得双方通信方便&#xff0c;特意封装了一个接口&#xff0c;可实现Android与Uni-app互相通讯。 二、内容 …

Qt-对话框使用总结

参考文章链接: Qt对话框之一:标准对话框 Qt对话框之二:模态、非模态、半模态对话框 标准对话框 颜色对话框 颜色对话框类 QColorDialog 提供了一个可以获取指定颜色的对话框部件。 /*** 第一种方式 ***/ //QColor color = QColorDialog::getColor(Qt::red, this,…

实时日志与发展:Elasticsearch 推出全新专用的 logsdb 索引模式

作者&#xff1a;来自 Elastic Mark Settle, George Kobar 及 Amena Siddiqi Elastic 最新发布的 logsdb 索引模式是专为日志管理优化的功能&#xff0c;旨在提升日志数据的存储效率、查询性能以及整体可用性。这个模式专注于满足现代日志处理需求&#xff0c;提供更高效的日志…

Java函数式编程【三】【Stream终止操作】【上】之【简单约简】

函数式编程可分为三个步骤&#xff1a;流的创建、流的中间操作和流的终止操作。其中流的中间操作可以有n个&#xff0c;而流的终止操作只能有一个。 函数式编程三个步骤示意图&#xff1a; 常用的终止操作 Stream的终止操作大致可分为两大类&#xff1a;简单约简的终止操作…

<数据集>输电线塔杂物识别数据集<目标检测>

数据集下载链接 &#xff1c;数据集&#xff1e;输电线塔杂物识别数据集&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90141102数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1099张 标注数量(xml文件个数)&#xff1a;1099 …

11.python文件

文章目录 Python 文件 I/O 总结1. **打印到屏幕**2. **读取键盘输入**3. **打开和关闭文件**3.1 open() 函数3.2 close() 方法 4. **文件读写操作**4.1 write() 方法4.2 read() 方法4.3 readline() 方法4.4 readlines() 方法4.5 seek() 和 tell() 方法 5. **文件重命名和删除**…