第二篇:基础窗口部件 QWidget

news2024/11/26 0:32:34

基础窗口部件 QWidget

QWidget 类是所有用户界面对象的基类,因此被称为基础窗口部件。QWidget 继承自 QObject 类和QPaintDevice 类,其中 QObject 类是所有支持 Qt 对象模型(Qt Object Model)的对象的基类,QPaintDevice 类是所有可以绘制的对象的基类。

QWidget 提供了自我绘制和处理用户输入等基本功能,Qt 提供的所有界面元素不是 QWidget 的子类就是与 QWidget 的子类相关联。要设计自己的窗口部件,可以继承自 QWidget 或者它的子类。

窗口与子部件

窗口与子部件(Widgets)是构建用户界面的基本构建块。

Qt 中把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏。**窗口就是没有父部件的部件,所以又称为顶级部件(top-level widget)。与其相对的是非窗口部件,又称为子部件(child widget)。**在 Qt 中大部分部件被用作子部件,嵌入在别的窗口中,如下面程序中的 label 标签。

举个例子:

#include <QApplication>
#include <QWidget>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 新建 QWidget 窗口
    QWidget widget;
    widget.resize(400, 300);

    QLabel label(&widget);
    label.setWindowTitle(QObject::tr("我是 label"));
    label.setText(QObject::tr("label:我不是独立窗口,只是 widget 的子部件"));

    QLabel label2;
    label2.setWindowTitle(QObject::tr("我是 label2"));
    label2.setText(QObject::tr("label2:我是个窗口"));
    label2.resize(400, 300);

    label2.show();
    widget.show();

    return a.exec();
}

运行结果如图所示:

在这里插入图片描述

不难看出,widget 与 label2 都是窗口,label 是 widget 的子部件。

窗口类型

上节说过窗口一般都有边框和标题栏,其实我们也可以将边框和标题栏去掉。QWidget 的构造函数如下:

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

参数 parent:父窗口部件(默认为 nullptr,表明没有父窗口)
参数 f:窗口类型(Qt::WindowFlags 类型,WindowType 类型太多,在此不一一列举,只选择 Qt::Dialog 和 Qt::SplashScreen)

将上节代码修改成:

#include <QApplication>
#include <QWidget>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 新建 QWidget 窗口
    QWidget widget(nullptr, Qt::Dialog); // 使用 Dialog 类型
    widget.resize(400, 300);

    QLabel label(&widget);
    label.setWindowTitle(QObject::tr("我是 label"));
    label.setText(QObject::tr("label:我不是独立窗口,只是 widget 的子部件"));

    QLabel label2(nullptr, Qt::SplashScreen); // 使用 SplashScreen 类型(启动画面)
    label2.setWindowTitle(QObject::tr("我是 label2"));
    label2.setText(QObject::tr("label2:我是个窗口"));
    label2.resize(400, 300);

    label2.show();
    widget.show();

    return a.exec();
}

运行结果如图所示:

在这里插入图片描述

可以看到,更改窗口类型后窗口的样式发生了改变,一个是对话框类型,一个是启动画面类型。

窗口几何布局

对于一个窗口,往往要设置它的大小和运行时出现的位置。

窗口的几何布局图:

在这里插入图片描述

这里的函数分为两类,一类是包含框架的,一类是不含框架的:

  • 包含框架:x()、y()、frameGeometry()、pos()和move()等函数
  • 不包含框架:geometry()、width()、height()、rect()和size()等函数

其实,我们上面的代码已经设置了 widget 和 lebel2 的大小(800 * 600)。接着我们改变一下 label 在 widget 内的位置:

    QLabel label(&widget);
    label.setWindowTitle(QObject::tr("我是 label"));
    label.setText(QObject::tr("label:我不是独立窗口,只是 widget 的子部件"));
    label.move(30, 80);  // 添加位置设置

运行结果如图所示:

在这里插入图片描述

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

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

相关文章

LTD与杭州商务局系统签订战略合作协议:共同推动商贸企业数字化

LTD将继续发挥“营销SaaS系统场景应用”的优势&#xff0c;为做强做优做大我国数字经济贡献更多力量。 近日&#xff0c;由杭州市商务局指导&#xff0c;杭州市商务发展研究中心&#xff08;杭州市中小商贸流通企业服务中心&#xff09;主办&#xff0c;每日商报承办&#xff0…

【Vue3】 Vue-Router路由和路由导航守卫

路由 前后端分离阶段路由单页面富应用阶段前端路由如何做到URL和内容进行映射?URl的hash&#xff08;哈希&#xff09;URl的history Vue-Router基本使用1&#xff0c;安装Vue-Router2&#xff0c;新建页面router文件下的index.js,路由&#xff0c;导入页面&#xff0c;导入路由…

一定解决JavaFx运行时Application爆红色问题

文章目录 注意maven项目创建maven javafx项目配置 注意 以下的问题纯粹是因为新建的是普通项目&#xff0c;而不是Java FX项目&#xff0c;如果新建的是Java FX项目&#xff0c;那么idea会自动给你生成相应的需要的pom.xml文件&#xff0c;并且运行也是正常的 maven项目创建…

RPC和HTTP协议

RPC 全称&#xff08;Remote Procedure Call&#xff09;&#xff0c;它是一种针对跨进程或者跨网络节点的应用之间的远程过程调用协议。 它的核心目标是&#xff0c;让开发人员在进行远程方法调用的时候&#xff0c;就像调用本地方法一样&#xff0c;不需要额外为了完成这个交…

Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)

一、简介 Rspack CLI 官方文档。 rspack.config.js 官方文档。 二、创建 vue 项目 创建项目&#xff08;文档中还提供了 Rspack 内置 monorepo 框架 Nx 的创建方式&#xff0c;根据需求进行选择&#xff09; # npm 方式 $ npm create rspacklatest# yarn 方式 $ yarn create…

SSD基本工作原理了解

SSD与RAM的原理有些类似&#xff0c;RAM使用晶体管和电容来表示0或1&#xff0c;晶体管用于将电荷转移到电容器或从电容器中吸取电荷&#xff0c;并且电荷必须每几微秒刷新一次。 而SSD相比于RAM的非易失性来自于其使用的浮栅晶体管。其创造了一个小笼子&#xff0c;不需要外界…

Sui生态项目|集隐私通信、移动钱包、链上朋友圈和红包功能一体的社交应用ComingChat

ComingChat是在Sui网络上构建的去中心化社交平台&#xff0c;功能众多&#xff0c;其中加密聊天功能为用户提供了安全的沟通方式。该功能利用了Signal加密协议&#xff0c;这是一种在Signal、WhatsApp和Skype等应用中广受欢迎的开源软件协议。 ComingChat在Sui上提供了全面的…

Echarts 柱状图-值为0时柱状图数据

需求是这样的&#xff1a;当数据为0时&#xff0c;鼠标悬浮也需要展示对应的数据&#xff0c;当值很小&#xff0c;也需进行占位&#xff0c;所以要加barMinHeight 刚开始以为没有对应方案呢&#xff0c;然后在官网死磕&#xff0c;最后还是找到解决方案了. 打开官网地址 解决方…

软件测试工程师的职业发展方向,别迷茫了,振作起来

软件测试在职业发展上&#xff0c;可以概括分为“管理”和“技术”两大类。另外&#xff0c;软件测试还可以在质量领域发展。 1. 软件测试在管理上的发展 软件测试管理是大家比较熟悉的软件测试职业发展路线之一&#xff0c;比较流行的职位包括测试组长、测试经理、测试代表、…

删除ubuntu开始菜单中的图标

背景 本来是很好看干净的界面 更新谷歌浏览器后出现了Gmail&#xff0c;幻灯片&#xff0c;谷歌硬盘等跟谷歌相关的乱七八糟东西搞得界面就很丑 解决问题 删掉那个图标 输入命令 sudo nautilus /usr/share/applicationssudo nautilus ~/.local/share/applications可以…

风险变化快,业务人员如何快速增加风控规则?

目录 什么是风控规则&#xff1f; 风控规则的来源 如何在风控引擎中配置规则&#xff1f; 今年暑假&#xff0c;博物馆和演出会门票被黄牛抢走。主办方、博物馆如果拥有风控系统&#xff0c;可以制订一系列规则来识别和拦截潜在的黄牛行为。 在制订规则时&#xff0c;需考虑…

什么是负载均衡

前提概述 关于负载均衡&#xff0c;我会从四个方面去说 1. 负载均衡产生的背景 2. 负载均衡的实现技术 3. 负载均衡的作用范围 4. 负载均衡的常用算法 负载均衡的诞生背景 在互联网发展早期&#xff0c;由于用户量较少、业务需求也比较简单。对于软件应用&#xff0c;我们只需要…

code论坛系统测试

目录 一 项目介绍**项目名称****项目介绍****项目功能****项目展示** 二 测试用例设计和功能测试1.测试用例设计**①登录页面****②注册页面****③首页****④发布帖子页面****⑤修改个人信息页面** 2.功能测试环境3.实际执行功能测试的部分操作**①登录页面****②注册页面****③…

Apple Pay 内购项目价格异常相关

通过 Apple Pay 内购商品子项的实际支付价格与 App Store Connect 配置中的存在差异; 经过已经排查过后发现是参照转换汇率的基准方式导致; 在 App 内购买项目 > 价格时间表 > App 内购买项目定价 > 所在国家或地区 一栏中,官方默认配置是以美国(USD)换算为基准 解决办…

优思学院|车间管理的五大基本方法

车间管理对于任何制造型企业来说都是至关重要的一环。有效的车间管理可以帮助企业提高生产效率&#xff0c;降低成本&#xff0c;改善产品质量&#xff0c;以及增强员工士气。在这篇文章中&#xff0c;我们将探讨车间管理的五大基本方法&#xff0c;这些方法可以帮助企业更好地…

NOIP 2011 提高组复赛真题及题解(day1 day2) Pascal语言

题目描述 为了准备一个独特的颁奖典礼&#xff0c;组织者在会场的一片矩形区域&#xff08;可看做是平面直角坐标系的第一象限&#xff09;铺上一些矩形地毯。一共有n 张地毯&#xff0c;编号从1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设&#xff0c;后…

FreeCAD傻瓜式教程之约束设定、构建实体、开孔、调整颜色、透明度、参考距离、任意修改尺寸、保持开孔居中等

本内容基于官方教程中的绘制简单的零件中的体会&#xff0c;在初次绘制的时候&#xff0c;总是无法完成&#xff0c;几经尝试才发现其关键点所在&#xff0c;以此文记录&#xff0c;用以被查资料&#xff0c;同时也希望能够帮到纯白新手快速熟悉该软件的绘图方法。 一、. 打开…

GEEMAP 基本操作(二)如何对 Landsat 进行全色锐化

遥感全色锐化的目标是从图像中获得最高级别的视觉清晰度和细节&#xff0c;通过结合全色波段图像的高空间分辨率和多光谱&#xff08;Landsat 为 B8 全色&#xff09;图像的宽光谱范围&#xff0c;全色锐化能够生成质量更清晰的最终彩色图像。 全色锐化过程涉及应用数学算法&a…

IDC发布《亚太决策支持型分析数据平台评估》报告,亚马逊云科技位列“领导者”类别

日前&#xff0c;领先的IT市场研究和咨询公司IDC发布《2023年亚太地区&#xff08;不含日本&#xff09;决策支持型分析数据平台供应商评估》1报告&#xff0c;亚马逊云科技位列“领导者”类别。IDC认为&#xff0c;亚马逊云科技在解决方案的协同性、敏捷性、完整性、及时性、经…

Keras三种主流模型构建方式:序列模型、函数模型、子类模型开发实践,以真实烟雾识别场景数据为例

Keras和PyTorch是两个常用的深度学习框架&#xff0c;它们都提供了用于构建和训练神经网络的高级API。 Keras: Keras是一个高级神经网络API&#xff0c;可以在多个底层深度学习框架上运行&#xff0c;如TensorFlow和CNTK。以下是Keras的特点和优点&#xff1a; 优点&#xf…