QWidget成员函数功能和使用详细说明(四)(文字+用例+代码+效果图)

文章目录

  • 1.测试工程配置
  • 2.成员函数
    • 2.1 void setParent(QWidget *parent)
    • 2.2 void setMouseTracking(bool enable)
    • 2.3 bool hasMouseTracking() const
    • 2.4 void setPalette(const QPalette &)
    • 2.5 const QPalette &palette() const
    • 2.6 int QWidget::grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
    • 2.7 void setSizeIncrement(const QSize &)
    • 2.8 void setSizePolicy(QSizePolicy)
    • 2.9 QSizePolicy sizePolicy() const
    • 2.10 void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
    • 2.11 void setUpdatesEnabled(bool enable)
    • 2.12 bool updatesEnabled() const
    • 2.13 void setWindowFilePath(const QString &filePath)
    • 2.14 void setWindowFlags(Qt::WindowFlags type)
    • 2.15 void setWindowIcon(const QIcon &icon)
    • 2.16 void setWindowModality(Qt::WindowModality windowModality)
    • 2.17 Qt::WindowModality windowModality() const
    • 2.18 void setWindowOpacity(qreal level)

1.测试工程配置

创建名为QtGuiAppTest的qwidget工程,带ui文件
在这里插入图片描述

2.成员函数

继承自QObject和QPaintDevice。QObject详见QObject各成员函数功能详细说明(文字+用例+代码+效果图)

2.1 void setParent(QWidget *parent)

给当前控件设置父控件,当前控件会移动到新的parent的(0,0)位置

2.2 void setMouseTracking(bool enable)

(1)功能说明
属性mouseTracking : bool用于设置控件的鼠标跟踪是否启用
如果鼠标跟踪不启用,则仅当鼠标按住左键并移动时控件才能接收到鼠标移动事件
如果鼠标跟踪开启,则不需要鼠标按下,只要鼠标移动就能获取到鼠标移动事件
(2)效果展示
在这里插入图片描述

(3)调用程序
QtGuiAppTest.ui
在这里插入图片描述

QtGuiAppTest.h

#pragma once
#include <QtWidgets/QWidget>
#include "ui_QtGuiAppTest.h"
class QtGuiAppTest : public QWidget
{Q_OBJECT
public:QtGuiAppTest(QWidget *parent = Q_NULLPTR);~QtGuiAppTest();
public slots:void SlotTest(int checkStat);
protected:void mouseMoveEvent(QMouseEvent* event)override;
private:Ui::QtGuiAppTestClass ui;
};

QtGuiAppTest.cpp

#include "QtGuiAppTest.h"
#include<qevent.h>
QtGuiAppTest::QtGuiAppTest(QWidget *parent):  QWidget(parent)
{ui.setupUi(this);connect(ui.checkBox, &QCheckBox::stateChanged,  this, &QtGuiAppTest::SlotTest);
}
QtGuiAppTest::~QtGuiAppTest()
{
}
void QtGuiAppTest::SlotTest(int checkStat)
{switch(checkStat){case Qt::Unchecked:this->setMouseTracking(false);break;case Qt::Checked:this->setMouseTracking(true);break;default:break;}
}
void QtGuiAppTest::mouseMoveEvent(QMouseEvent* event)
{int x = event->x();int y = event->y();QString str = QString("mouse pos: ( %1, %2  )").arg(x).arg(y);ui.textBrowser->setText(str);
}

2.3 bool hasMouseTracking() const

判断是否设置了鼠标跟踪

2.4 void setPalette(const QPalette &)

(1)功能说明
属性palette : QPalette,存储了控件的调色板信息
该属性描述了控件的调色板。在渲染标准组件时,组件的样式使用调色板,并可用作确保自定义控件能够与本机平台的外观保持一致的手段。不同的平台或不同的风格具有不同的调色板是很常见的。
将新调色板分配给一个控件时,此调色板中的颜色角色将与控件的默认调色板组合在一起,形成控件的最终调色板。控件的背景角色的调色板条目用于填充控件的背景(请参阅 QWidget::autoFillBackground),前台角色(foreground role)用于初始化 QPainter 的笔。(即设置了前台颜色角色,则使用qpainter绘制时会渲染为前台颜色)
默认值取决于系统环境。QApplication 维护一个系统/主题调色板,该调色板作为所有控件的默认值。对于某些类型的控件,也可能有特殊的调色板默认值(例如,在 Windows Vista 上,所有派生自 QMenuBar 的类都有一个特殊的默认调色板)。您还可以通过将自定义调色板和控件名称传递给 QApplication::setPalette() 来自行定义控件的默认调色板。最后,样式始终可以在调色板设置之后进行润色(参见 QStyle::polish())。
QWidget 将显式调色板角色从父控件传播到子控件。如果将画笔或颜色分配给调色板上的特定角色,并将该调色板分配给一个控件,则该角色将传播到控件的所有子控件,并覆盖该控件的任何系统默认值。请注意,默认情况下,调色板不会传播到窗口(参见 isWindow()),除非启用了 Qt::WA_WindowPropagation 属性。
当前样式用于渲染所有标准Qt控件的内容,可以从控件调色板中自由选择颜色和画笔,或者在某些情况下,忽略调色板(部分或全部)。特别是,某些样式(如 GTK 样式、Mac 样式和 Windows Vista 样式)依赖于第三方 API 来呈现控件的内容,并且这些样式通常不遵循调色板。因此,将角色分配给控件的调色板并不能保证更改控件的外观。相反,您可以选择应用样式表。
(2)效果展示
在这里插入图片描述

部分子控件跟随父控件pallet变化颜色,且子控件设置自己的pallet是不起作用的
(3)调用程序
QtGuiAppTest.h

#pragma once
#include <QtWidgets/QWidget>
#include "ui_QtGuiAppTest.h"
class QtGuiAppTest : public QWidget
{Q_OBJECT
public:QtGuiAppTest(QWidget *parent = Q_NULLPTR);~QtGuiAppTest();
public slots:void SlotTest(int checkStat);
private:Ui::QtGuiAppTestClass ui;
};

QtGuiAppTest.cpp

#include "QtGuiAppTest.h"
QtGuiAppTest::QtGuiAppTest(QWidget *parent):  QWidget(parent)
{ui.setupUi(this);QPalette p(QColor(148, 233, 237));this->setPalette(p);connect(ui.pushButton, &QPushButton::clicked, this,  &QtGuiAppTest::SlotTest);
}
QtGuiAppTest::~QtGuiAppTest()
{

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

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

相关文章

Centos7离线安装mysql-5.7.44bundle包

在 CentOS 7 上安装 mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar&#xff08;这里假设这是一个包含多个 RPM 包的 tar 归档文件&#xff09;的步骤通常涉及解压归档文件、安装 RPM 包以及配置 MySQL 服务。以下是一个详细的步骤指南&#xff1a; 1. 下载和解压 RPM 包 首先&am…

实战干货,企业在数字化转型中如何通过最佳实践落地BI报表?

引言&#xff1a;上一篇文章我们提到&#xff1a;通过9大步骤&#xff0c;帮助企业在数字化转型中搭建数据分析的报表体系&#xff01;在实际中的落地过程&#xff0c;通过实施服务的哪些最佳实践可以确保落地效果&#xff0c;达到项目预期目标&#xff0c;给客户带来实质价值&…

香蕉云编+uniapp打包ios的开发包和生产包

登录香蕉云编&#xff0c;找到 云编-ios证书生成&#xff0c;新建CSR文件&#xff0c;并下载csr文件。 登录苹果开发者中心&#xff0c;进入证书页面。 1.创建一个证书&#xff0c;选择ios Distribution类型即可&#xff0c;这是个通用的证书&#xff0c;既能用来打正式包又能…

UML-概述

统一建模语言 是一种专门为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言。UML是面向对象设计的建模工具。它是一种图形化、图标式的一种语言。 软件开发声明周期 做需求–> 形成需求文档 --> 系统设计&#xff08;写代码之前的准备工作&#xff09;–&g…

PyQt5动态热力图清空画布关闭ColorBar

PyQt5生成正弦波动态热力图清空画布关闭ColorBar 1、简介 生成随机正弦波,使用pyqtgraph展示出来,并且使用热力图展示不同频率的正弦波,使用不同的画布颜色显示热力图的变化。 使用python3.8 导入库: pip install matplotlib==3.7.5 pip install numpy==1.24.4 pip in…

“郭有才”商标主要类别都已被注册!

前阵山东网红“郭有才”火遍大江北&#xff0c;当然少不了许多想去申请注册“郭有才”商标名称的&#xff0c;普推商标知产老杨检索&#xff0c;发现“郭有才”商标申请了43个类别&#xff0c;基本上类别都被申请注册&#xff0c;已注册的商标大多是在“郭有才”火之前申请注册…

MyBatis入门程序详解

目录 一、MyBatis概述 二、编写MyBatis入门程序 三、配置SQL提示 四、传统jdbc的劣势 一、MyBatis概述 MyBatis是一个基于Java的持久层框架&#xff0c;它内部封装了JDBC操作&#xff0c;使得开发人员可以更专注于SQL语句本身而非繁琐的JDBC操作细节。在MyBatis中&#xff0…

现代Android 开发中一系列工具和架构组件

在现代 Android 开发中&#xff0c;谷歌推荐了一系列工具和架构组件&#xff0c;以提高代码的可维护性、可扩展性和测试性。以下是一些关键的现代编程方法和工具&#xff1a; 架构模式 MVVM (Model-View-ViewModel)&#xff1a; 这是目前推荐的架构模式&#xff0c;尤其在结合…

C++vector的模拟实现

成员变量&#xff1a; iterator _startnullptr; iterator _finishnullptr; iterator _end_of_storagenullptr; 成员函数&#xff1a; 迭代器&#xff1a; typedef T* iterator;typedef const T* const_iterator;iterator begin(){return _start;}const_iterator begin() con…

第10章:Electron应用打包与分发

第10章&#xff1a;应用打包与分发 在完成Electron应用开发后&#xff0c;最后一步是将应用打包并分发给最终用户。本章将介绍如何使用Electron的打包工具将应用打包成可执行文件&#xff0c;并介绍常见的分发策略和工具。 10.1 使用Electron Forge Electron Forge是一个现代…

最新全平台无人直播硬改XCMS系统,支持任何平台

软件功能: 改虚拟摄像头为真实摄像头&#xff0c;改真实麦克风&#xff0c;图层去重、镜头晃动、增加噪点去重、随机播放辅音&#xff0c;两条音轨帮助音频去重、随机音效、随机播放速度&#xff0c;直播源实时转播等等.防违规&#xff0c;防非实时 设备需求: 电脑&#xf…

菜鸡的原地踏步史03(◐‿◑)

每日一念 改掉自己想到哪写哪的坏习惯 一维动态规划 爬楼梯 class Solution {/**dp[i] 爬到第i个台阶有dp[i]种爬法dp[i] - dp[i - 1] 1 & dp[i - 2] 2*/public int climbStairs(int n) {int[] dp new int[n 1];dp[0] 1;dp[1] 1;for(int i 2; i < n; i) {dp[i]…

纯javascript实现图片批量压缩打包zip下载后端ThinkPHP多国语言切换国际站

最近在做一个多国语言的工具站&#xff0c;需要实现多国语言切换&#xff0c;说到多国语言站&#xff0c;肯定是有2种方式&#xff0c;第一是子域名&#xff0c;第二就是子目录。根据自己的需要来确定。 后台配置如下&#xff1a; 前台显示&#xff1a; 前端纯javascript实现…

【深度学习】图形模型基础(5):线性回归模型第三部分:线性回归模型拟合

1.引言 本博文专辑的焦点主要集中在回归模型的实用案例和工具上&#xff0c;从简单的单变量线性回归入手&#xff0c;逐步过渡到包含多个预测变量、非线性模型&#xff0c;以及在预测和因果推断中的应用。本文我们将介绍回归模型推断的一些数学结构&#xff0c;并提供一些代数…

初识STM32:芯片基本信息

STM32简介 STM32是ST公司基于ARM公司的Cortex-M内核开发的32位微控制器。 ARM公司是全球领先的半导体知识产权&#xff08;IP&#xff09;提供商&#xff0c;全世界超过95%的智能手机和平板电脑都采用ARM架构。 ST公司于1987年由意大利的SGS微电子与法国的Thomson半导体合并…

【Linux】:进程创建与终止

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux程序地址空间的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从…

嵌入式开发者应该有的心态自信

各位开发者大家好,今天主要给大家分享一下,嵌入式开发者应该有的心态,缓解工作和生活中的压力,也是非常重要的。 真的。 世界就是个巨大的草台班子,自信点,别人没有你想象的那么厉害。 普通人最大的问题,就是过分高估别人,并且过分贬低自己。 一、对那些看似厉害的人…

DAY20-力扣刷题

1.填充每个节点的下一个右侧节点指针 116. 填充每个节点的下一个右侧节点指针 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;层次遍历 class Solution {public Node connect(Node root) {if (root null) {return root;}// 初始化队列同时将第一层节点加入队列…

Hadoop权威指南-读书笔记-02-关于MapReduce

Hadoop权威指南-读书笔记 记录一下读这本书的时候觉得有意思或者重要的点~ 还是老样子~挑重点记录哈&#x1f601;有兴趣的小伙伴可以去看看原著&#x1f60a; 第二章 关于MapReduce MapReduce是一种可用于数据处理的编程模型。 MapReduce程序本质上是并行运行的&#xff0c…

一个uni-app + vue3引入unocss

unocss 版本最好使用0.58&#xff0c;版本太高的话不兼容引入时会报错