Qt---控件的基本属性

文章目录

  • enabled(控件可用状态)
  • geometry(位置和尺寸)
    • 简单恶搞程序
  • windowIcon(顶层 widget 窗口图标)
    • 使用 qrc 机制
  • windowOpacity(窗口的不透明值)
  • cursor(当鼠标悬停空间上的形状)
    • 自定义鼠标图标
  • toolTip(鼠标悬停时的提示)
  • focusPolicy(控件获取焦点的策略)
  • styleSheet(通过CSS修改控件样式)

enabled(控件可用状态)

isEnabled():获取控件的可用状态
setEnabled(bool):设置控件是否可用

QPushButton *b1 = new QPushButton(this);
QPushButton *b2 = new QPushButton(this);
b1->setText("点击");
b2->setText("点击"); b2->move(0, 100);
qDebug() << "b1: " << b1->isEnabled();
b2->setEnabled(false);
qDebug() << "b2: " << b2->isEnabled();

image.png

geometry(位置和尺寸)

move 只是移动控件的位置,也就是只修改控件的位置
geometry 可以设置四个属性,位置:x,y;尺寸:width,height

geometry():获取控件的位置和尺寸,return:QRect
setGeometry(QRect)/setGeometry(int x, int y, int width, int height):设置控件位置和尺寸

QPushButton *b1 = new QPushButton(this);
QPushButton *b2 = new QPushButton(this); b2->move(20, 20);qDebug() << b1->geometry();
qDebug() << b2->geometry();
QRect q(100, 100, 50, 50);
b1->setGeometry(q);
qDebug() << b1->geometry();
b2->setGeometry(200, 200, 100, 100);
qDebug() << b2->geometry();

image.png

简单恶搞程序

QLabel *l = new QLabel(this);l->setText("和我在一起好不好");l->setGeometry(350, 200, 100, 100);QPushButton *b1 = new QPushButton(this); b1->setText("答应");QPushButton *b2 = new QPushButton(this); b2->setText("拒绝");b1->setGeometry(650, 500, 90, 30);b2->setGeometry(50, 500, 90, 30);connect(b1, &QPushButton::clicked, this, [=](){Widget::close();});connect(b2, &QPushButton::clicked, this, [=](){int x, y;x = rand() % this->geometry().width();y = rand() % this->geometry().height();b2->move(x, y);});

image.png
image.png
这个程序需要点到答应按钮就会退出窗口, 而点击拒绝按钮该按钮就会随机出现到别的地方

windowIcon(顶层 widget 窗口图标)

windowIcon():获取到控件的窗口图标,返回 QIcon 对象。
setWindowIcon(const QIcon& icon):设置控件的窗口图标。

QIcon icon("d:/1.jpeg"); // 注意不可以用 \ 
this->setWindowIcon(icon);

image.png

使用 qrc 机制

上述的方法相对来说比较麻烦,因为需要用到绝对路径显然不合理。

  1. 首先创建 qrc 文件

image.png
image.png

  1. 设置前缀

image.png

  1. 添加需要的图片

image.png
image.png
因为 qrc 文件中添加图片需要在当前项目的目录中,因此选择图片之后出现这个说明:需要的图片并不在当前项目的目录或者子目录下,点击复制之后选中当前项目目录保存即可。
image.png

  1. 引用

添加完之后就可以使用了

QIcon icon(":/1.jpeg"); // 注意需要在前缀前面加上冒号
this->setWindowIcon(icon);

windowOpacity(窗口的不透明值)

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

QPushButton *b1 = new QPushButton(this); b1->setText("+");
QPushButton *b2 = new QPushButton(this); b2->setText("-");
b2->move(0, 200);connect(b1, &QPushButton::clicked, this, [=](){// 获取当前不透明值float opacity = this->windowOpacity();if(opacity >= 1.0) return;qDebug() << opacity;opacity += 0.1; // 增加值// 设置值this->setWindowOpacity(opacity);
});connect(b2, &QPushButton::clicked, this, [=](){// 获取当前不透明值float opacity = this->windowOpacity();if(opacity <= 0.0) return;qDebug() << opacity;opacity -= 0.1; // 减少值// 设置值this->setWindowOpacity(opacity);
});

image.png
image.png

cursor(当鼠标悬停空间上的形状)

cursor():获取到当前 widget 的 cursor 属性, 返回 QCursor 对象。
setCursor(const QCursor& cursor):设置该 widget 光标的形状. 仅在鼠标停留在该 widget 上时有效
QGuiApplication::setOverrideCursor(const QCursor& cursor):设置全局的形状,对整个程序中的所有 widget 都会生效覆盖

QPushButton *b1 = new QPushButton(this); b1->setText("+");
QPushButton *b2 = new QPushButton(this); b2->setText("-");
b2->move(0, 200);b1->setCursor(QCursor(Qt::WaitCursor));
b2->setCursor(QCursor(Qt::IBeamCursor));
QGuiApplication::setOverrideCursor(QCursor(Qt::IBeamCursor));

由于截图显示不出来就不截图了
Ctrl + 左键 点击 Qt::WaitCursor 跳转到源码即可看到所有的形状列表。

自定义鼠标图标

// 创建⼀个位图对象, 加载⾃定义光标图片QPixmap pixmap(":/1.jpeg");// 缩放图片的尺⼨.pixmap = pixmap.scaled(64, 64);// 创建 QCursor 对象, 并指定 "热点" 为 (2, 2) 坐标位置.// "热点" 就是⿏标点击时⽣效的位置.QCursor cursor(pixmap, 2, 2);// 设置光标this->setCursor(cursor);

toolTip(鼠标悬停时的提示)

setToolTip;设置 toolTip。
setToolTipDuring:设置 toolTip 提示的时间. 单位 ms. 时间到后 toolTip 自动消失

QPushButton *b1 = new QPushButton(this); b1->setText("+");
QPushButton *b2 = new QPushButton(this); b2->setText("-");
b2->move(0, 200);b1->setToolTip("减少透明度"); b1->setToolTipDuration(1000);
b2->setToolTip("增加透明度"); b2->setToolTipDuration(1000);

image.png

focusPolicy(控件获取焦点的策略)

焦点:选中这个元素后接下来的操作都是针对这个元素。例如输入框选中后可以往输入框中写字。

focusPolicy():获取该 widget 的 focusPolicy, 返回 Qt::FocusPolicy。
setFocusPolicy(Qt::FocusPolicy policy):设置 widget 的 focusPolicy

Qt::FocusPolicy 是⼀个枚举类型:

作用
Qt::NoFocus控件不会接受键盘焦点
Qt::TabFocus控件只可以通过Tab键接受焦点
Qt::ClickFocus控件只可以鼠标点击接受焦点
Qt::StrongFocus(默认值)控件可以通过Tab键或者鼠标点击接受焦点
Qt::WheelFocusStrongFocus和可以通过鼠标滚轮

styleSheet(通过CSS修改控件样式)

this->setStyleSheet("background-color: #333");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620741.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义Centos的终端的命令提示符

背景 当我们使用终端登陆Centos时&#xff0c;就自动打开了ssh终端。这个终端的命令提示符一般是这样的&#xff1a; 这个以#号结束的一行字&#xff0c;就是我们说的命令提示符了。 这个是腾讯云的服务器的提示符&#xff0c;可以看到主机名是VM-4-7-centos。 但是这个看起…

考华为数通方向的HCIE认证经验分享

大家好&#xff0c;我是来自安阳工学院20级网络工程的楚同学。在2023年12月6日&#xff0c;我顺利通过了华为数通方向的HCIE认证&#xff0c;在此&#xff0c;我想分享一些备考心得给正在努力备考的小伙伴们。 关于考证的契机 在大一上学期&#xff0c;我们的课程安排在实验…

如何在树莓派安装Nginx并实现固定公网域名访问本地静态站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务器&#xff0c;Ngi…

ABAP MESSAGE 常用的类型

类型文本描述A终止处理终止&#xff0c;用户必须重启事务X退出与消息类型A 类似&#xff0c;但带有程序崩溃 MESSAGE_TYPE_XE错误处理受到干扰&#xff0c;用户必须修正输入条目,左下角提示!W警告处理受到干扰&#xff0c;用户可以修正输入条目,左下角提示!I信息处理受到干扰&a…

STM32存储左右互搏 SDIO总线读写SD/MicroSD/TF卡

STM32存储左右互搏 SDIO总线读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元&#xff0c;由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡&#xff0c;手机领域用的TF卡实际就是MicroSD卡&#xff0c;尺寸比SD卡小&#xff0c;而电路和协…

fiddler常用操作汇总

1、过滤 2、查看数据包内容 3、弱网测试 弱网测试其实就是提前设置好一个值&#xff0c;在这个环境下进行测试就行了。 &#xff08;1&#xff09;进入定制规则页面&#xff1a; (2) 点击CtrlF调起搜索&#xff0c;在Find what 中输入300进行查找&#xff0c;更改上行、下行网…

【MATLAB源码-第43期】基于matlab的turbo码误码率仿真比较不同迭代次数,采用logmap/sova算法。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 Turbo码是一种前向纠错码 (Forward Error Correction, FEC)&#xff0c;在 1993 年由法国的两位研究员 Claude Berrou 和 Alain Glavieux 提出。这种编码技术以其接近 Shannon 极限的高性能而受到广泛关注。以下是关于 Turbo…

软考125-上午题-【软件工程】-传统软件的测试策略

一、传统软件的测试策略 有效的软件测试实际上分为4步进行&#xff0c;即&#xff1a;单元测试、集成测试、确认测试、系统测试。 1-1、单元测试&#xff08;模块测试&#xff09; 单元测试也称为模块测试&#xff0c;在模块编写完成且无编译错误后就可以进行。 单元测试侧重…

C语言文件操作详解

1. 什么是文件&#xff1a; 文件是计算机中存储数据的一种方式&#xff0c;它可以包含文本、图像、音频、视频等各种形式的信息。在计算机系统中&#xff0c;文件被组织成一个个独立的单元&#xff0c;可以通过文件名来标识和访问。文件可以存储在计算机的硬盘、固态硬盘、光盘…

初学python记录:力扣706. 设计哈希映射

题目&#xff1a; 不使用任何内建的哈希表库设计一个哈希映射&#xff08;HashMap&#xff09;。 实现 MyHashMap 类&#xff1a; MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中&#x…

使用IT-Tools+Cpolar在Windows搭建自己的IT工具箱并实现远程在线使用

文章目录 1. 使用Docker本地部署it-tools2. 本地访问it-tools3. 安装cpolar内网穿透4. 固定it-tools公网地址 本篇文章将介绍如何在Windows上使用Docker本地部署IT- Tools&#xff0c;并且同样可以结合cpolar实现公网访问。 在前一篇文章中我们讲解了如何在Linux中使用Docker搭…

unity——Button组件单击双击长按功能

1.实现单击、双击、长按功能 using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; public class ButtonControl_Click_Press_Double : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler {publi…