Qt QWidget窗口基类

news2024/11/16 13:56:29

文章目录

  • 1 QWidget介绍
  • 2 如何显示 QWidget窗口
    • 2.1 新建基于QWidget的窗口类
    • 2.2 再添加一个QWidget窗口类
    • 2.3 显示新添加的 QWidget窗口
  • 3 常用的属性和方法
    • 3.1 窗口位置
    • 3.2 窗口大小
    • 3.3 窗口标题
    • 3.4 窗口图标
    • 3.5 资源文件
  • 4 实例

1 QWidget介绍

Qt 中的常用控件,比如按钮、文本框、下拉框、树形控件等都是控件,QWidget类是所有控件类的父类。

  • 所有窗口类的基类
    • Qt中有3个窗口的基类:QWidgetQMainWindowQDialog
    • 其中,QMainWindowQDialog都是继承自QWidge
  • 所有控件类的基类
    • Qt中的控件类(按钮、输入框、单选框等)也属于窗口类
    • 它们的基类也是QWidget
  • 可以内嵌到其他窗口的内部,此时需要给其指定父窗口
  • 可以作为独立的窗口显示,此时不能给其指定父窗口

2 如何显示 QWidget窗口

零新建一个基于QWidget的主窗口,并且再添加一个基于QWidget的窗口

2.1 新建基于QWidget的窗口类

新建一个工程Demo,只是这里让主窗口继承自QWidget

在这里插入图片描述

2.2 再添加一个QWidget窗口类

首先,右键单击【Demo】,点击【添加新文件…】

在这里插入图片描述

选择【Qt】->【Qt设计师界面类】

在这里插入图片描述

选择【Widget】,然后下一步

在这里插入图片描述

输入类名,然后点击下一步

在这里插入图片描述

2.3 显示新添加的 QWidget窗口

为了便于显示,打开subwidget.ui设计师界面,拖放一个按钮,如下:

在这里插入图片描述

然后来到widget.cpp文件中,添加如下代码,来显示SubWidget窗口:

// 在widget.cpp文件中

// 未指定父窗口, 这个窗口就是独立的窗口
// 需要调用其show方法 来将其显示
SubWidget *subWidget = new SubWidget();
subWidget->setWindowTitle("SubWidget");
subWidget->show();

如果指定了父窗口, 这个窗口就是内嵌窗口
就不需要调用其show方法 因为其父窗口显示时,会自动显示子窗口
SubWidget *subWidget = new SubWidget(this);
subWidget->setWindowTitle("SubWidget");

3 常用的属性和方法

可以去开始菜单栏寻找帮助文档

在这里插入图片描述

切换到索引,输入QWidget ,就可以查看QWidget的详细帮助文档

在这里插入图片描述

3.1 窗口位置

// 1. 设置窗体的几何信息 
// 获取相对于当前窗口父窗口的几何信息,宽高,坐标点信息 
const QRect &geometry() const;
void setGetmetry(int x, int y, int w, int h);
void setGetmetry(const QRect &);

// 2. 移动窗口
// 重新设置窗口的位置  
void move(int x, int y);
void move(const QPoint &);

3.2 窗口大小

通常,窗口可以拖动其右下角,进行放大和缩小。我们可以设置窗口的最小大小和最大大小。

另外,窗口可以设置为固定大小,这样窗口就不能放大和缩小。

常用的设置大小的函数如下:

// 1. 设置窗口尺寸
QSize size() const;
void resize(int w, int h);
void resize(const QSize &);

// 2. 设置最大尺寸
QSize maximunSize() const;
void setMaximumSize(const QSize &);
void setMaximumSize(int maxw, int maxh);

// 3. 设置最小尺寸
QSize minimumSize() const;
void setMinimumSize(const QSize &);
void setMinimumSize(int w, int h);

// 4. 设置固定尺寸
void setFixedSize(const QSize &);
void setFixedSize(int w, int h);

// 5. 单独设置窗口的高度
int height() const;
int minimumHeight() const;
int maximumHeight() const;

void setFixedHeight(int h);
void setMaximumHeight(int maxh);
void setMinimumHeight(int minh);

// 6. 单独设置窗口的宽度
int width() const;
int minimumWidth() const;
int maximumWidth() const;

void setFixedWidth(int w);
void setMaximumWidth(int maxw);
void setMinimumWidth(int minw);

3.3 窗口标题

设置和获取窗口的标题,直接使用如下两个函数即可:

// 获取和设置窗口的标题
QString windowsTitle() const;
void setWindowTitle(const QString &);

3.4 窗口图标

设置窗口的图标,需要一个Qlcon对象,如下:

// 获取和设置窗口的图标
QIcon windowIcon() const;
void setWindowIcon(const QIcon &);

// 构造 QIcon图标对象
// 有6个重载的构造的方法,通常我们使用最后一个
QIcon::QIcon(const QString &fileName);

3.5 资源文件

首先将图标文件pages.ico,复制到项目目录Demo下的目录中,如下:

在这里插入图片描述

选择QtResourceFile,这样就会在项目中,添加一个.qrc的文件

在这里插入图片描述

资源文件命名为res

在这里插入图片描述

接下来打开“资源文件编辑器”, 注意:如果没有打开,直接右键res.qrc,然后选择“OpeninEditor”即可

如下:

在这里插入图片描述

然后,点击添加前缀,

再点击“添加文件",定位到拷贝到项目目录下的图标文件pages.ico,最终效果如下:

在这里插入图片描述

接下来就可以拷贝这个pages.ico的资源路径,在程序中使用了

在这里插入图片描述

4 实例

来演示QWidget中常用的方法

主要代码

void Widget::on_btnGetSize_clicked() {
    qDebug() << "------------------------\n";
    QRect rect = this->geometry();
    qDebug() << "左上:" << rect.topLeft() << "\n右上" << rect.topRight()
             << "\n左下" << rect.bottomLeft() << "\n右下" << rect.bottomRight()
             << "\n宽" << rect.width() << "\n高" << rect.height();
}

void Widget::on_btnSetSize_clicked() {
    this->resize(400, 400);
}

void Widget::on_btnSetFixedSize_clicked() {
    this->setFixedSize(500, 500);
}

void Widget::on_btnSetMinSize_clicked() {
    this->setMinimumSize(300, 300);
}

void Widget::on_btnSetMaxSize_clicked() {
    this->setMaximumSize(600, 600);
}

void Widget::on_btnMove_clicked() {
    this->move(100, 100);
}

void Widget::on_btnSetTitle_clicked() {
    this->setWindowTitle("修改后的标题");
}

void Widget::on_btnSetIcon_clicked() {
    this->setWindowIcon(QIcon(":/res/pages.ico"));
}


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

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

相关文章

设计模式的艺术P1基础—2.2 类与类的UML图示

设计模式的艺术P1基础—2.2 类与类的UML图示 在UML 2.0的13种图形中&#xff0c;类图是使用频率最高的两种UML图之一&#xff08;另一种是用于需求建模的用例图&#xff09;&#xff0c;它用于描述系统中所包含的类以及它们之间的相互关系&#xff0c;帮助人们简化对系统的理解…

Mac重置NVRAM

Mac重置NVRAM Mac重置NVRAM如何重置 NVRAM搭载 Apple 芯片的 Mac基于 Intel 的 Mac Mac重置NVRAM NVRAM&#xff08;非易失性随机访问存储器&#xff09;是一小部分内存&#xff0c;Mac 使用这些内存来储存某些设置并对其进行快速访问。PRAM&#xff08;参数 RAM&#xff09;储…

二叉树的层序遍历经典问题(算法村第六关白银挑战)

基本的层序遍历与变换 二叉树的层序遍历 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入…

kubernetes 审计与日志 详解

开头语 写在前面&#xff1a;如有问题&#xff0c;以你为准&#xff0c; 目前24年应届生&#xff0c;各位大佬轻喷&#xff0c;部分资料与图片来自网络 内容较长&#xff0c;页面右上角目录方便跳转 基本 介绍 在Kubernetes集群中&#xff0c;API Server的审计日志记录了…

golang实现加密解密文档

golang实现加密解密文档 package mainimport ("bytes""crypto/aes""crypto/cipher""crypto/rand""encoding/base64""flag""fmt""io""io/ioutil" )func main() {encodePtr : flag.…

过去半年信竞基础学习总结

当Richard同学从去年7月份&#xff0c;开始从YY班学习C和信息学竞赛时&#xff0c;他对C还一无所知&#xff0c;但对计算机和编程的兴趣让他一直都乐在其中。在过去的半年中&#xff0c;通过参加各个平台的月赛&#xff0c;让他更加热爱编程&#xff0c;也让Richard更加了解自己…

linux项目部署(jdk,tomcat,mysql,nginx,redis)

打开虚拟机&#xff0c;与连接工具连接好&#xff0c;创建一个文件夹 cd /tools 把jdk,tomcat安装包放入这个文件夹里面 #解压 tar -zxvf apache-tomcat-8.5.20.tar.gz #解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 编辑jdk文件以及测试jdk安装 第一行代码路径记得改成我…

服务器里面打开浏览器访问不了会是什么原因

我们在日常使用服务器的过程中&#xff0c;时常会有遇到各类情况&#xff0c;近日就有遇到用户联系到德迅云安全&#xff0c;反馈自己在服务器里面打不开浏览器&#xff0c;服务器里面没有网络无法访问的情况。那我们今天就来讲下服务器里面打不开网站可能是由哪些原因导致。 …

可充电助听器有哪些优势?

可充电助听器有哪些优势 01 无需频繁更换电池&#xff0c;对于手指不灵活、眼神不好的老年用户以及无法自行更换电池的儿童用户&#xff0c;使用更为方便。 02 可充电助听器的电池一般密封在助听器内部&#xff0c;机身的防水防尘性能更强。 03 部分充电盒具有快充、储电、…

GC5958Q—三相无刷直流电机速度控制芯片,应用在静音风扇马达上,可替代APX9358/茂达

GC5958Q提供无传感器三相无刷直流电机速度控制的所有电路。正弦波驱动器的方法将是更好的低噪声。该控制器的功能包括启动电路&#xff0c;反电动势换向控制&#xff0c;脉冲宽度调制(PWM)速度控制&#xff0c;锁定保护&#xff0c;和热关断电路。该GC5958Q是适用于游戏机和CPU…

一夜爆火,3天60亿,这泼天的富贵也轮到我们尔滨了

近日&#xff0c;哈尔滨这座北国之城突然成为全国瞩目的焦点&#xff0c;一夜之间&#xff0c;冰雪大世界、索菲亚大教堂、中央大街等老牌旅游景点在网络短视频和游客们的热切关注下&#xff0c;成为了这个冬季的新“顶流”。当地市民姚先生和胡先生异口同声表示&#xff1a;“…

服务发现Discovery

对于注册进eureka里面的微服务&#xff0c;可以通过服务发现来获得该服务的信息 1、 修改cloud-provider-payment8001的controller import com.my.springcloud.utils.RestResponse; import com.my.springcloud.entities.Payment; import com.my.springcloud.service.PaymentSe…

关于外连接、内连接和子查询的使用(2)

目录 一. 前言 二. 使用外连接、内连接和子查询进行解答 三. 思维导图 一. 前言 在前面我们对外连接、内连接和子查询的使用有了一些了解&#xff0c;今天我们将继续更深入的进行学习。&#xff08;这里缺少的八个题目在博主的前面博客有解答&#xff0c;大家可以移步前面一…

科技稳田心:地震频发,珈和科技领跑农险业务全流程

近日&#xff0c;日本能登半岛发生7.6级地震&#xff0c;13年以来首次触发“大海啸警报”。据估算&#xff0c;上一次的“3.11日本大地震”&#xff0c;导致了农林水产业损失约1200亿元。 自然灾害正严重影响着农业生产和可持续发展&#xff0c;提高农民抗风险能力&#xff0c…

知识图谱gds使用记录

安装 从下载站下载对应的包到plugin目录下&#xff0c;修改配置文件/etc/neo4j/neo4j.conf&#xff0c;末尾加入gds.*&#xff0c;重新启动 在浏览器输入CALL gds.list()命令进行测试 建立图映射 为了使用图算法&#xff0c;需要先将图数据库的内容映射为一个新图 如果是全…

国标GB28181视频监控EasyCVR平台:视频集中录制存储/云端录像功能及操作介绍

安防视频监控系统EasyCVR视频综合管理平台&#xff0c;采用了开放式的网络结构&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;同时还具备权限管理、设…

微信预约小程序制作指南:从小白到专家

在当今的数字时代&#xff0c;微信小程序已经成为了一种非常流行的应用方式。预约功能更是成为了许多小程序的核心功能之一。如果你也想为你的小程序添加预约功能&#xff0c;以下步骤将会对你有所帮助。 一、进入乔拓云网后台 乔拓云网是一个在线小程序开发平台&#xff0c;你…

熟悉HDFS常用操作

1. 利用Hadoop提供的Shell命令完成下列任务 (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件。 #检查文件是否存在./bin/hdfs dfs -test -e text.txt echo $? #结果是1 代表已存在 #根据结果判断出文件已存…

OpenHarmony自定义Launcher

前言 OpenHarmony源码版本:4.0release 开发板:DAYU / rk3568 DevEco Studio版本:4.0.0.600 自定义效果: 一、Launcher源码下载 Launcher源码地址:https://gitee.com/openharmony/applications_launcher 切换分支为OpenHarmony-4.0-Release,并下载源码 二、Launcher源…

[AutoSar]基础部分 RTE 08 runnable mapping

目录 关键词平台说明一、runnable mapping的必要性二、runnable mapping 通用规则三、Task type四、可以不用mapping的runnbale 关键词 嵌入式、C语言、autosar、runnable 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0c;C编译器HighTec (…