QSplitter设置宽高比例的正确方法

问题

实际开发中,需要经常调整QSplitter中子窗口的宽度/高度比例。对水平QSplitter来说,是宽度比例;对垂直QSplitter来说,是高度比例。下面以水平QSplitter为例说明。

我们首先应该会想起看看QSplitter是不是有设置比例的函数。查找文档,发现有一个setStretchFactor函数。经过尝试以后,发现无论如何设置,都不能获得想要的效果。

没有想象的顺利,那么就需要仔细阅读官方文档。下面是官方文档对于此函数的描述:
请添加图片描述

翻译过来意思是:

此函数用于更新尺寸策略中,对应索引位置窗口的伸缩比例值。

参数stretch不是真正有效的伸缩比例;最终呈现的窗口大小是伸缩因子stretch乘上index对应的子窗口的初始宽度(以水平为例)。

可见,最终的子窗口的宽度或高度,并不是仅仅调用一次setStretchFactor就可以控制最终显示效果的。也就是说,最终显示结果是由stretch factor和子窗口初始宽度以乘积的方式共同决定的。

方案

点击QSplitter函数文档下方的链接的相关函数,可以发现setSizes函数是用来设置子窗口宽度值的。
请添加图片描述
于是使用以下代码设置并测试:

// 设置比例5:1
QList<int> sizes;// 在保持比例的情况下,绝对值要尽量大
sizes << 50000 << 10000; 
ui->splitter->setSizes(sizes);

注意上面的代码,我们没有调用setStretchFactor,所以stretchFactor默认为1:1,所以最终比例由setSizes函数来决定。

提出一个小问题:为什么setSizes绝对值要尽量大?此处为答案1

总结

以后遇到QSplitter设置比例,直接使用setSizes,且在保持你想要设置的比例的前提下,尽量给setSizes设置比较大的参数。


  1. 小问题答案:如果给setSizes的参数很小,且如果小于QSplitter,QSplitter内的子窗口将被拉伸,想要保持你想要的比例根本不可能。所以,将setSizes参数设置为万级别大小,是一个比较好的选择。 ↩︎

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

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

相关文章

我要回家软件_工具用的好,下班回家早,推荐几个堪称神器的高效率软件

工具用的好&#xff0c;下班回家早&#xff0c;别人已经早早下班&#xff0c;你还在哼哧哼哧的加班&#xff0c;有时候并不是你比别人慢&#xff0c;而是你没有找到提高工作效率的工具呀&#xff0c;我这次推荐几个堪称神器的高效率软件工具&#xff0c;也许能极大的提高你的工…

【转】带你玩转Visual Studio——01.开篇介绍

开篇之前&#xff0c;先唠叨几句 本人从事C开发工作一年半&#xff0c;总想就C开发方面写点东西。写什么呢&#xff1f;想了一下还是写点跟开发密切相关的吧&#xff0c;要说跟开发最密切相关的那莫过于就是开发工具了&#xff0c;也就是常常说的集成开发环境(IDE)。 这一年多…

Qt中的角度和正方向描述清单

在Qt开发中&#xff0c;不同的API对应有不同的0度和正方向&#xff0c;本文做一个汇总&#xff0c;方便查阅。 函数/模块角度描述画圆弧QPainter::drawArc3点钟方向为0度&#xff0c;逆时针为正向画弦QPainter::drawChord3点钟方向为0度&#xff0c;逆时针为正向画圆饼QPainte…

丢失模式不联网有用吗_用眼过度,打开手机“护眼模式”真的有用吗?

现如今&#xff0c;人们越来越离不开手机&#xff0c;用手机办公或者用手机娱乐&#xff0c;因疫情在家学习的学生们&#xff0c;都需要通过手机来进行学习&#xff0c;深夜剁手的你是不是也躲在被子里&#xff0c;一遍又一遍地刷新着消息&#xff0c;入睡前的最后一件事是关掉…

【基础】Qt-VS调试器下载与配置

前言 因为MSVC版的Qt不自带调试器&#xff0c;所以在Windows上使用MSVC版的Qt进行开发时&#xff0c;需要配置调试器。 本文讲解了在Windows下&#xff0c;下载和配置MSVC版Qt调试器的过程&#xff0c;并给出下载地址。 调试器选择 下表列出了不同平台下的调试器选择方案&am…

【转】带你玩转Visual Studio——02.带你新建一个工程

接着上一篇文章带你玩转Visual Studio——开篇介绍继续讲这个主题&#xff0c;现在我们从创建一个新的工程开始。 一步一步创建项目 依次选择菜单&#xff1a;File\New\Project&#xff0c;打开New Project对话框。<1>.选择项目类型&#xff1a;Win32 Console Applicat…

python seaborn 热图 值对应颜色_基于行值的seaborn热图配色方案

我有一个数据帧&#xff0c;部分是这样复制的&#xff1a;import pandas as pdimport numpy as nptab pd.DataFrame(np.array([[ 46, 39, 25, 29, 21, 12, 33, 32, 70, 109, 144, 158, 161,184, 163, 113, 117, 82, 76, 88, 77, 76, 64, 35],[ 39, 33, 29, 29, 26, 14, 25, 33…

【必知必会】pro文件及常用配置

前言 笔者在工作中了解到&#xff0c;有部分同学对Qt的项目文件&#xff0c;即.pro文件的基本配置编写不是很了解。作为一名Qt工程师&#xff0c;.pro文件的编写也是必会的技能&#xff0c;本文对此进行一个讲解&#xff0c;并将相关资料做一个汇总。 .pro文件的介绍 .pro文…

stm32烧录软件_stm32怎么烧录程序

STM32烧录程序目前笔者知道的有三种&#xff1a;JLink &#xff0c;Ulink和串口烧录&#xff0c;使用工具分别为&#xff1a;JLink&#xff0c;ULink以及USB转TTL线。ULink 烧录程序在安装MDK过程中&#xff0c;会有提示是否安装驱动&#xff0c;该驱动就为ULink驱动&#xff0…

【转】第00课导读:生活中的设计模式——启程之前,请不要错过我

为什么叫设计模式 什么是设计模式设计模式与生活有什么联系为什么要学设计模式如何进行学习为什么选择 Python 弥补市场空缺大势所趋&#xff0c;Python 已然成风简单的 Python 基础 Python 的特点基本语法常用容器 List&#xff08;列表&#xff09;Tuple&#xff08;元组&…

【探究】信号槽到底能不能有返回值?

【探究】信号槽到底能不能有返回值&#xff1f; 前言 Qt信号槽到底可不可以有返回值呢&#xff1f;问了下身边的同事&#xff0c;有的人说可以&#xff0c;有的人说不可以。在实际项目中&#xff0c;确实没看到过有人使用带返回值的信号槽&#xff0c;可以说存在感很低。平时…

python yield 简单用法_通过实例简单了解python yield使用方法

实例代码如下def demo():print("开始执行...")while 1:res yield 这是返回值print("res:",res)d1 demo()print(d1)print(next(d1))print("*"*20)print(next(d1))执行结果如下&#xff1a;开始执行...这是返回值********************res: None这…

【转】第01课:生活中的监听模式——一坑爹的热水器

用程序来模拟生活从剧情中思考监听模式 监听模式监听模式的模型抽象 代码框架类图基于框架的实现模型说明 设计要点推模型和拉模型应用场景 【故事剧情】 刚刚大学毕业的 Tony 只身来到北京这个硕大的城市&#xff0c;开始了北漂的生活。但刚刚毕业的他身无绝技、包无分文&…

【经验】Qt项目开发必备工具

在实际的项目中&#xff0c;除了需要掌握Qt开发框架本身&#xff0c;还需要掌握一些开发工具。这些工具能起到事半功倍的效果&#xff0c;甚至某些工具是开发不可或缺的。下面笔者就介绍一些常用的开发工具的用法及下载地址&#xff0c;希望对缺少实际项目经验的同学提供一些参…

c与python内存传递_python - 从Python向C ++传递COM指针数组 - 堆栈内存溢出

我已经阅读了许多文档&#xff0c;示例和StackOverflow主题&#xff0c;但仍然无法正常工作&#xff01; 我正在为我的C COM对象编写一个Python接口。 这不是我第一次这样做。 过去&#xff0c;我已经成功地使用comtypes获取单个接口指针&#xff0c;并将它们传递给我的COM类&…

【转】TCP/IP协议--TCP的超时和重传

TCP是可靠传输。可靠之一体现在收到数据后&#xff0c;返回去一个确认。但是不能完全避免的是&#xff0c;数据和确认都可能丢失。解决这个办法就是&#xff0c;提供一个发送的重传定时器&#xff1a;如果定时器溢出时还没收到确认&#xff0c;它就重传这个报文段。 想法是完美…

【技术】Qt对话框讲解

前言 Qt中对话框QDialog是几乎每个项目都会用到的GUI窗口对象。本文通过讲解QDialog及其子类在项目中经常被用到的功能点&#xff0c;帮助小伙伴们理解和掌握其使用方法。 QDialog QDialog是Qt对话框类树中的基类&#xff0c;Qt为我们提供了很多QDialog子类&#xff0c;即标…

mysql集群方案对比_MySQL云原生方案在携程开发测试场景中的实践

一、背景与使用场景随着Kubernetes平台在容器云计算领域的一统天下&#xff0c;云原生 (Cloud Native) 一词也被提的越来越频繁。各类应用纷纷走上了容器化、云原生化的道路&#xff0c;无状态服务应用在Kubernetes平台上的运行&#xff0c;已经得到了大规模生产级别的实践认可…

UML核心问题

帮助读者理解每种图是为了展现什么内容、解决什么核心问题而存在的。 下面按照重要性先后依次说明。 1. 用例图 核心&#xff1a;人、目标、功能 以人为出发点&#xff0c;描述人实现一个目标需要使用哪些功能&#xff0c;仅仅指出功能点就行&#xff0c;点到即止&#xff0c…

【转】setsocketopt getsocketopt比较全的参数说明

setSocketOption各项的含义 DELAY 小缓冲写入延迟值。如果为0&#xff0c;则禁用了TCP对于小缓冲区操作的Nagle算法。如果需要启动该算法则需要把该值设置为非0 KEEPLIVE 保持连接的特性。如果该值为0&#xff0c;则禁用了保持连接的特性。如果要启动该特性则要把…