当前位置: 首页 > article >正文

「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.kler.cn/a/394526.html

相关文章:

  • UVa 11855 Buzzwords
  • 动态规划问题-删除并获得点数(Java实现)
  • 《Django 5 By Example》阅读笔记:p76-p104
  • 深度学习--正则化
  • 相机光学(四十二)——sony的HDR技术
  • 微服务day07
  • 进入未来城:第五周游戏指南
  • 机器学习day4-朴素贝叶斯分类和决策树
  • ssm121开放式教学评价管理系统+vue(论文+源码)_kaic
  • java -jar`命令详解:运行JAR文件、传递参数与性能调优
  • 版本更新|大量云机风控指纹升级、新增安卓10系统!DuoPLus云手机新版本上线
  • 【人工智能】深入理解LSTM:使用Python构建文本生成模型
  • k8s上部署redis高可用集群
  • Qt主线程把数据发给子线程,主线程会阻塞吗
  • 技术速递|.NET MAUI 欢迎 Syncfusion 开源贡献
  • expo5.2运行web报错Cannot find module ‘react‘
  • 鸿蒙北向开发 : hdmfs-分布式文件系统
  • Acrel安科瑞ADL400防逆流电表在光伏并网中的应用-安科瑞 蒋静
  • 51单片机基础03 矩阵按键读取与外部中断读取
  • windows C#-默认约定(上)
  • 泰矽微重磅发布超高集成度车规触控芯片TCAE10
  • 【机器学习基础】西瓜书阅读笔记task01
  • 游戏设计:推箱子【easyx图形界面/c语言】
  • AcWing 1097 池塘计数 flood fill bfs搜索
  • JFlash添加自定义MCU型号
  • 【汇编语言】包含多个段的程序(二)—— 将数据、代码、栈放入不同的段