「QT」窗口类 之 QWidget 窗口基类

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「QT」QT5程序设计
📚全部专栏
「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合
「C/C++」C/C++程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制开发
「Py」Python程序设计「Math」探秘数学世界「PK」Parasolid函数说明

目录

    • Qt中QWidget类详解(基于Qt 5.15版本)
      • 一、类的引言
      • 二、使用范围
      • 三、类的头文件
      • 四、类的注意事项
      • 五、类的继承
      • 六、类的构造介绍
      • 七、公有函数介绍
      • 八、Static函数介绍
      • 九、运算符重载
      • 十、详细代码举例

Qt中QWidget类详解(基于Qt 5.15版本)

一、类的引言

QWidget类是Qt框架中的一个核心类,用于创建图形用户界面(GUI)应用程序的基本可视化元素。它是所有窗口组件类的父类,每个窗口组件都是一个QWidget。QWidget类提供了创建和管理窗口部件所需的各种功能,是构建Qt GUI应用程序的基石。

二、使用范围

QWidget类可以创建和管理各种窗口和部件,如主窗口、对话框、按钮、文本框、列表框等。同时,QWidget还支持部件的布局管理,可以方便地调整部件的位置和大小,实现复杂的界面布局。此外,QWidget类具有强大的事件处理能力,可以接收并处理各种用户输入事件,如鼠标点击、键盘输入、鼠标移动等。

三、类的头文件

在使用QWidget类时,需要包含其头文件:

#include <QWidget>

四、类的注意事项

  1. QWidget类对象常用作父组件或顶级组件使用。
  2. QWidget提供了一套完整的窗口系统,包括窗口管理、事件处理、绘图等功能。
  3. 不要在moveEvent或resizeEvent两个事件处理函数中设置几何参数,否则将导致无限循环。

五、类的继承

QWidget类继承自QObject类,因此具有QObject类的所有功能和特性,如信号与槽机制、对象树结构等。QWidget类是所有Qt GUI组件的基类,包括窗口、按钮、文本框等。

六、类的构造介绍

QWidget类的构造函数如下:

QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());

其中,参数parent指向父窗口,如果这个参数为nullptr,则窗口就成为一个顶级窗口。参数f是构造窗口的标志,主要用于控制窗口的类型和外观等。

七、公有函数介绍

QWidget类提供了丰富的公有函数来管理和操作窗口部件,包括:

  1. 窗口管理

    • setGeometry(int x, int y, int w, int h):设置窗口的几何信息(位置和尺寸信息),不包括边框。
    • move(int x, int y):移动窗口,重新设置窗口的位置。
    • resize(int w, int h):重新设置窗口的尺寸信息。
    • setWindowTitle(const QString &title):设置窗口的标题。
    • setWindowIcon(const QIcon &icon):设置窗口的图标。
  2. 事件处理

    • close():关闭当前窗口。
    • hide():隐藏当前窗口。
    • show():显示当前窗口及其子窗口。
  3. 绘图功能

    • paintEvent(QPaintEvent *event):重写此函数以实现自定义绘制逻辑。
  4. 子控件管理

    • setParent(QWidget *parent):给当前窗口设置父对象。
    • parentWidget():获取当前窗口的父对象。

八、Static函数介绍

QWidget类还提供了一些静态函数,如:

  • createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()):创建一个窗口容器。
  • find(WId id):根据窗口ID查找窗口。
  • setTabOrder(QWidget *first, QWidget *second):设置两个控件之间的Tab键顺序。

九、运算符重载

QWidget类没有直接进行运算符重载,但Qt框架中的许多其他类(如QPoint、QSize等)都进行了运算符重载,以提供更方便的操作。

十、详细代码举例

以下是一个简单的QWidget使用示例,展示了如何创建一个独立的QWidget窗口,并设置其标题和样式:

#include <QApplication>
#include <QWidget>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget *widget = new QWidget();widget->setAttribute(Qt::WA_DeleteOnClose, true); // 关闭窗口时自动删除对象widget->setWindowTitle("QWidget Example");widget->setStyleSheet("background-color: rgb(255, 0, 0); border: 2px solid black; border-radius: 10px;");widget->setGeometry(320, 150, 250, 220); // 设置窗口位置和大小widget->show(); // 显示窗口return app.exec();
}

在这个示例中,我们首先创建了一个QApplication对象,这是每个Qt GUI应用程序的入口点。然后,我们创建了一个QWidget对象,并设置了其标题、样式、位置和大小。最后,我们调用show()函数来显示窗口。

QWidget类是Qt GUI应用程序开发中的核心类之一,通过掌握其使用方法和特性,开发者可以高效地构建出美观、易用且具有高度交互性的用户界面。


在这里插入图片描述

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

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

相关文章

如何保证Redis与MySQL双写一致性

什么是双写一致性问题&#xff1f; 双写一致性主要指在一个数据同时存在于缓存&#xff08;如Redis&#xff09;和持久化存储&#xff08;如MySQL&#xff09;的情况下&#xff0c;任何一方的数据更新都必须确保另一方数据的同步更新&#xff0c;以保持双方数据的一致状态。这一…

sealos部署K8s,安装docker时master节点突然NotReady

1、集群正常运行中&#xff0c;在集群master-1上安装了dockerharbor&#xff0c;却发现master-1节点NotReady&#xff0c;使用的网络插件为 Cilium #安装docker和harbor&#xff08;docker运行正常&#xff09; rootmaster-1:/etc/apt# apt install docker-ce5:19.03.15~3-0~u…

干货分享之Python爬虫与代理

嗨伙伴们&#xff0c;今天是干货分享哦&#xff0c;可千万不要错过。今天小蝌蚪教大家使用phthon时学会巧妙借用代理ip来更好地完成任务。 让我们先了解一下为什么说咱们要用爬虫代理ip呢&#xff0c;那是因为很多网站为了防止有人过度爬取数据&#xff0c;对自身资源造成损害…

【JavaEE初阶 — 多线程】死锁的产生原因和解决方法

目录 死锁 1.构成死锁的场景 (1) 一个线程一把锁 问题描述 解决方案(可重入锁) (2) 两个线程两把锁 问题描述 (3)N个线程 M把锁 哲学家就餐问题 2.死锁的四个必要条件 3.如何解决死锁问题 (1)避免出现请求和保持 (2)打破多个线程的循环等待关系 死锁…

【视觉SLAM】1-概述

读书笔记 文章目录 1. 经典视觉SLAM框架2. 数学表述2.1 运动方程2.2 观测方程2.3 问题抽象 1. 经典视觉SLAM框架 传感器信息读取&#xff1a;相机图像、IMU等多源数据&#xff1b;前端视觉里程计&#xff08;Visual Odometry&#xff0c;VO&#xff09;&#xff1a;估计相机的相…

探索 Python HTTP 的瑞士军刀:Requests 库

文章目录 探索 Python HTTP 的瑞士军刀&#xff1a;Requests 库第一部分&#xff1a;背景介绍第二部分&#xff1a;Requests 库是什么&#xff1f;第三部分&#xff1a;如何安装 Requests 库&#xff1f;第四部分&#xff1a;Requests 库的基本函数使用方法第五部分&#xff1a…

Redisson的可重入锁

初始状态&#xff1a; 表示系统或资源在没有线程持有锁的情况下的状态&#xff0c;任何线程都可以尝试获取锁。 线程 1 获得锁&#xff1a; 线程 1 首次获取了锁并进入受保护的代码区域。 线程 1 再次请求锁&#xff1a; 在持有锁的情况下&#xff0c;线程 1 再次请求锁&a…

基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)

摘 要 互联网发展至今&#xff0c;广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#xff0c;劳动强度大&#xff0c;费时费力…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析

前提&#xff1a; 注意的是&#xff1a;我们这里是从avframe转换成avpacket 后&#xff0c;从avpacket中查看NALU。 在实际开发中&#xff0c;我们有可能是从摄像头中拿到 RGB 或者 PCM&#xff0c;然后将pcm打包成avframe&#xff0c;然后将avframe转换成avpacket&#xff0…

从0学习React(11)

1. 引言 上个星期的工作内容是写IT资产管理的前端页面。其实&#xff0c;尽管我之前有一些前端开发的经验&#xff0c;但并不是很多。这次让我独立完成一个页面的开发&#xff0c;刚开始时我感到无从下手。 2. 初期的困惑和焦虑 我记得在星期一和星期二的时候&#xff0c;那…

BILSTM法律网站用户提问自动分类

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

unity 一个物体随键盘上下左右旋转和前进的脚本

注意&#xff1a;脚本挂在gamaobject 上面 &#xff0c;操作对象的目标 this.gameObject 为操作对象 using System.Collections; using System.Collections.Generic; using UnityEngine;public class changePosition : MonoBehaviour {//操作对象的目标 this.gameObject 为操…

【论文阅读】Virtual Compiler Is All You Need For Assembly Code Search

阅读笔记:Virtual Compiler Is All You Need For Assembly Code Search 1. 研究背景 逆向工程:逆向工程需要在庞大的二进制文件中快速定位特定功能(例如恶意行为)。传统方法依赖于经验和启发式算法,效率低下。汇编代码搜索:通过自然语言搜索汇编代码功能,能够更高效地处…

Wireshark中的length栏位

注&#xff1a;Ethernet II的最小data length为46&#xff0c;如果小于&#xff0c;会补全到46. 1.指定网卡抓取的&#xff0c;链路为ethernet。 IPv4 Ethernet II 长度为 14 bytes - L1ipv4 header中的length包括header和payload的总长度 - L2wireshark中length表示抓取的pac…

CentOS网络配置

上一篇文章&#xff1a;VMware Workstation安装Centos系统 在CentOS系统中进行网络配置是确保系统能够顺畅接入网络的重要步骤。本文将详细介绍如何配置静态IP地址、网关、DNS等关键网络参数&#xff0c;以帮助需要的人快速掌握CentOS网络配置的基本方法和技巧。通过遵循本文的…

前端搭建低代码平台,微前端如何选型?

目录 背景 一、微前端是什么&#xff1f; 二、三大特性 三、现有微前端解决方案 1、iframe 2、Web Components 3、ESM 4、EMP 5、Fronts 6、无界&#xff08;文档&#xff09; 7、qiankun 四、我们选择的方案 引入qiankun并使用&#xff08;src外层作为主应用&#xff09; 主应…

CSS:怎么把网站都变成灰色

当大家看到全站的内容都变成了灰色&#xff0c;包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢&#xff1f; 有人会以为所有的内容都统一换了一个 CSS 样式&#xff0c;图片也全换成灰色的了&#xff0c;按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…

基于Spring Boot的计算机课程管理:工程认证的实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

flinkOnYarn并配置prometheus+grafana监控告警

flinkOnYarn并配置prometheusgrafana监控告警 一、相关服务版本&#xff1a; flink版本&#xff1a;1.17.2 pushgateway版本&#xff1a;1.10.0 prometheus版本&#xff1a;3.0.0 grafana-v11.3.0参考了网上的多个文档以及学习某硅谷的视频&#xff0c;总结了一下文档&#x…

在esxi8.0中安装黑群晖的过程记录及小问题处理

问题记录 1.某种原因在网页中安装系统后&#xff0c;发现synology搜出来的设备还是169的地址&#xff0c;但是点击设置需要输入管理员账号密码才能设置ip&#xff0c;试了一下&#xff0c;账号输入admin&#xff0c;密码留空正常设置。 2.晚上试了一下&#xff0c;在全新的esxi…