[QT GUI Tips] Qt creator + PySide6 如何让图像控件的尺寸变化和窗口一致

news2024/11/18 20:40:23

前言:【这是个AI不会回答的问题】

Qt Creator 新的版本又发出了,Pyside6 有很多新功能。但是,一些传统的方法要被淘汰了。

一个经典的例子是:

我有个一个图像要显示在Form里面的图像控件上,OK, 我现在拖拽编程,把图像控件搞到Form( Qt 叫Widget)后,然后我抓一个 graphicView的图像控件。

调好了尺寸,运行。

然后,

我准备双击,最大化一下Form的窗口大小,然后,

就发现,放大的只有Widget , graphicView 仍然是那个大小没变动啊。

【Python + QT 构建GUI的方式和 C# 的方式有很大不同,这种图像匹配控件的情况,在C# 应该是设定一下,图像控件的某个属性就可以了。QT 里面,确实是要复杂一点,需要考虑layout的整个定义和设计】


任务:拖拽编程要求

 在一个父 Widget中,加一个tabWidget,然后,在tabWidget里面加一个graphicsView

目标,让要让 tabWidget 的大小随着其父 Widget 的变化而变化,同时tabWidget里面的graphicsView也一起变化:

比如这样:


环境:

Qt Creator 14.0.1

Based on Qt 6.7.2 (MSVC 2019, x86_64)

Built on Aug 6 2024 00:17:40

 


老版本的方法:

  • 打开Qt Designer:启动Qt Designer并打开你的.ui文件。

  • 添加QTabWidget:在工具箱中找到QTabWidget控件,将其拖放到你的主窗口(QWidget)中。

  • 设置布局:选中QTabWidget,然后在属性编辑器中找到“布局”属性。你可以选择“LAYOUT IN A BOX”或者直接选择一个布局,比如QVBoxLayout

  • 添加标签页:双击QTabWidget来添加标签页,或者在属性编辑器中设置标签页的数量和标题。

  • 调整大小策略:为了确保QTabWidget能够随着窗口大小的变化而变化,你可以在属性编辑器中找到QTabWidget的“大小策略”属性,并设置为“Expanding”,这样它就会填充整个可用空间。

  • 保存并使用.ui文件:保存你的.ui文件,然后在你的PySide6应用程序中加载它。

import sys
from PySide6.QtWidgets import QApplication, QWidget, QTabWidget, QVBoxLayout

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        # 创建一个QTabWidget
        self.tabWidget = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()

        # 为tabWidget添加标签页
        self.tabWidget.addTab(self.tab1, "Tab 1")
        self.tabWidget.addTab(self.tab2, "Tab 2")

        # 创建布局管理器
        layout = QVBoxLayout()
        layout.addWidget(self.tabWidget)

        # 设置布局管理器到窗口
        self.setLayout(layout)

        # 调整窗口大小
        self.resize(400, 300)

        # 双击窗口时调整大小
        self.installEventFilter(self)

    def eventFilter(self, source, event):
        if source is self and event.type() == QEvent.MouseButtonDblClick:
            self.resize(800, 600)
            return True
        return super().eventFilter(source, event)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = MyWidget()
    widget.show()
    sys.exit(app.exec())

 【案,这个完全不适合我的新版本。在新版本里面,QVBoxLayout,根本不存在,而且,属性框里,“LAYOUT IN A BOX”也没有。所以,需要创建新的修改方法】


 新版本的方法:

 【案,QT creator 新版本的布局,已经不放在控件的属性框里面了,而是需要【右键】打开】

 1 案例里面控件对象的列表:

2 布局的设定

2.1 拖拽一个主Wiidget并布局如下:

他的属性如下图:

我们需要关注红框里的设定,这个会影响我们要做的任务:

2.2 拖拽一个gridlayout(对齐用,也可以不用)

放到Widget里面,并拉满

 2.3 拖拽一个tabWidget(选一个图像控件的容器,我选了这个Tab控件)

放到gridlayout里面,然后,拉满。

拉满这里有一个非常关键的一步:

选择,在窗体布局里面布局,我这里灰色,是因为我已经这么设定了

这样,布局和空间就绑定了,然后这个geometry应该是不能选的,这时候就是拉满了,否则,你还是没有设定好。

 

 2.4 在tab(某个tab 页)里面拖拽一个加入一个graphicsView

2.4.1 刚拉入的时候,还没有绑定layout

上例中,tab3就没有绑定layout,也就是没有做布局的处理。

2.4.2 本例,在tab3右键,选择【在窗体中布局】

这时候,所有的选项都是灰色的,那是因为Tab页上面,啥也没有,根本不需要布局

现在,我们把图像控件graphicView从工具箱里面拉动过来:再右键,

这时候,就可以设定【在窗体布局中布局了】

我们选择这个选项,点击,后会自动布局了,不过还需要调整一下。

这样,这个就拉满了。

后面运行,双击窗体后,放大最大后,Tab的里面图像的窗体也会自动匹配了。

一定要拉满:他才会跟随

同样,要选择在窗体布局里面布局

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

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

相关文章

操作系统-系统调用

应用程序调用printf(),会触发系统调用write() 1、概念 操作系统服务的编程接口,通常由高级语言编写(C/C),程序访问通常是通过高层次的API接口而不是直接进行系统调用。 2、三种最常用的应用程序编程接口(API&#xf…

从零开始:网页在线制作入门指南

如果你对网页在线制作感兴趣,想学习如何从零开始创建一个网页,这个教程将带你了解基础步骤、所需工具以及如何将设计交付给开发人员的完整过程。接下来,让我们开始吧! 一、 明确目标群体与网站用途 在启动网页制作之前&#xff…

【UE】简单介绍“Extra Win Function”插件的功能

“Extra Win Function”插件包含32个C类封住成的蓝图节点供用户使用,下面简单介绍19个可能常用的节点的功能。 1. “Is Internet Available” 检查是否可接入互联网 2. “Get Device Platform” 获取设备平台名称 3. “Get Android Device RAMSize” 获取RAM 大小 …

Leetcode 486. 预测赢家

1、心路历程 这道题最开始想到的做法是回溯,因为看起来遍历就可以做,但是又想到同时需要维护两个人的数据就有点懵了。后来提示说用动态规划做是OK的。 这道题最难的地方在于,需要把输赢建模成“净胜分”,这样就能把两个主体合并…

如何在Android Studio中找到CMakeLists.txt的打印信息

根据Android Studio 中的 CMake message 输出位置在哪里? - 简书 (jianshu.com) 的描述,MESSAGE函数打印的STATUS级别的信息在android studio中是看不到的。所以采用WARNING级别打印。 下面使用android studio 2023.2.1打印信息。编译之后,点…

[实用工具]Docker安装nextcloud实现私有云服务

Nextcloud是一款开源的云存储和协作平台,允许用户在自己的服务器上存储和访问文件,同时提供强大的协作工具。它可以替代商业云存储服务,让用户拥有完全控制和自主管理自己的数据。 Nextcloud支持文件上传和下载,可以通过Web界面、…

指针 (八)例题深度解析

有关于指针的基本知识点我们都已经讲解完了,不出意外的话,这一篇就是我们指针的最后一期了,今天我们就来看一看一些有关于指针运算的例题: 每一道题诸君都应该有着自己先独立思考的能力,咱们不要怕面对,不…

算法笔记day02

目录 游游的you 腐烂的苹果 孩子们的游戏 游游的you 游游的you__牛客网 这里需要注意 oooo 是3分而不是两分。 算法思路: 拼出you可以得2分,先拼出所有的you,在将所有的o拼在一起即可。 选3个字母个数最小的就是能拼出you的个数。 #in…

LeetCode讲解篇之34. 在排序数组中查找元素的第一个和最后一个位置

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题让我们求目标值的左边界和右边界,我们可以采用二分查找搜索有序数组内大于等于目标值的最左边的下标 然后我们只需要在有序数组查找一下大于等于target的最左边下标 如果该下标越界或者下标对应…

陈奂仁「仓鼠艺术奥德赛」游戏体验上线:踏上沉浸式艺术之旅

今年 2 月,陈奂仁(Hanjin)在 The Sandbox 推出「仓鼠涂鸦」系列,将艺术与实用性融为一体。该系列包括 1,500 个以仓鼠为灵感的人物化身,其中更包括 8 款向著名艺术家致敬、独一无二的 NFT。这些人物化身通过「表情」&a…

芝法酱学习笔记(0.6)——nexus与maven私库

一、私库的需求 在一个公司中,后端程序员通常几十上百个。在没有镜像私库的情况下,每当引入新库时,大家都会从maven中央仓库下载一遍这个库。这样无疑十分浪费。再加之国家的防火墙政策,许多人下载lib包可能还会十分缓慢。不同程…

【黑马点评】8-12达人探店、好友关注、附近商户、用户签到、UV统计功能

【黑马点评】8-12达人探店、好友关注、附近商户、用户签到、UV统计功能 8 达人探店8.1 达人探店-发布探店笔记8.2 达人探店-查看探店笔记8.3 达人探店-点赞功能8.4 点赞排行榜 9 好友关注9.1 好友关注-关注和取消关注9.2 好友关注-共同关注9.3 好友关注-Feed流实现方案9.4 好友…

懒人笔记-QT程序UOS打包篇

懒人笔记-uos打包篇 前言1、deploy2、组织打包目录2.1 控制文件2.1.1 control的内容:2.1.2 postinst的内容:2.1.3 postrm的内容: 2.2 执行程序2.3 开机自启(可选项) 3、输出deb安装包4、服务卸载4.1 服务卸载4.2 程序按…

信息论笔记

知识点 学习视频链接 信息论简介和概率论复习 信息的定义 信息、信号、消息的概念 香农信息 信息论的研究对象和目的 信源:产生消息和消息序列的源编码器:将消息变为适合信道传输的物理量信道:传输或者储藏信号的媒介译码器&#xf…

mysql事务使用和事务隔离级别与sqlserver的比较

在 MySQL 中,事务 (Transaction) 是一个将一组 SQL 语句作为一个整体执行的机制。事务确保要么所有操作都执行成功,要么在遇到错误时回滚到之前的状态,从而保证数据库数据的一致性和完整性。 事务的四大特性(ACID) 事…

RISC-V笔记——基础

1. 前言 RISC-V旨在支持广泛的定制和专业化。RISC-V的ISA是由一个基本整型ISA和其它对基本ISA的可选扩展组成。每个整型ISA可以使用一个或多个可选的ISA扩展进行扩展。 基本整型ISA精选了最小的一组指令,这些指令足以为编译器、汇编器、链接器和操作系统提供足够的…

iPhone相册怎么删除相同照片

我们都太喜爱用iPhone拍照了,我们的iPhone相册就像是一个永远不想清理的衣柜,堆满了各种美好瞬间和意外的重复照片。面对成百上千的照片,有时候我们不禁想:这些相同的照片到底是怎么混进来的?今天,就让我来…

SpringBoot集成RocketMQ实现六种消息

1. 简介 RocketMQ 支持多种消息类型以满足不同的业务需求 普通消息(Standard Message): 这是最常用的消息类型,适用于大多数场景。 可以设置延迟级别(Delay Levels),但不支持消息轨迹。 顺序消…

C/C++程序员为什么要了解汇编?了解汇编有哪些好处?如何学习汇编?

目录 1、概述 2、从汇编的角度去理解问题的若干实例说明 2.1、使用空指针去访问类的数据成员或调用类的虚函数为什么会引发崩溃? 2.2、从汇编代码的角度去理解多线程的执行细节,去理解多线程在访问共享资源时为什么要加锁 2.3、使用Windbg静态分析d…

【Matlab】Matlab 导入数据.csv或者.xlsx文件,然后使用这些数据来绘制图表

Matlab 导入数据.csv或者.xlsx文件,然后使用这些数据来绘制图表 初始数据 filename C:\Users\jia\Desktop\yadian\data\1Hz 2024_09_12 17_10_06.csv; 代码: clc;clear close all; % 读取Excel文件 filename C:\Users\jia\Desktop\yadian\data\1Hz …