QTreeView不能按子项内容长度自动出现水平滚动条及滚动不理想问题解决

Qt树形结构数据展示-QTreeView Qt树形结构数据显示,QTreeView 阅读详情
AI摘要

当QTreeView的子项内容超过其可视宽度时,设置水平滚动条策略为Qt::ScrollBarAlwaysOn无效。为实现自动显示滚动条,需创建QScrollArea,将QTreeView放入其中,并设置QTreeView的最小尺寸。同时,应禁用QTreeView的滚动条以避免与QScrollArea的滚动条冲突。

现象

当树视图中的子项内容很长时,即比树视图可见的水平表头宽都长(宽)时,QTreeView水平滚动条不会自动出现,即使通过如下代码设置树视图的水平滚动条策略为Qt::ScrollBarAlwaysOn也不行:


m_pLayerTreeView->setHorizontalSrollBarPolicy(Qt::ScrollBarAlwaysOn);

现象如下:

树视图水平滚动策略为Qt::ScrollBarAsNeeded时的效果

树视图水平滚动策略为Qt::ScrollBarAlwaysOn时的效果

可以看到,树视图中的子项内容很长时,即比树视图可见的水平表头宽都长(宽)时,QTreeView水平滚动条不会自动出现,即水平滚动条出现了,滚动它也不能全部显示右侧的内容,即水平滚动条滚动最右边,树视图子中的内容依然显示不全。

解决方法

解决方法如下代码所示:


m_pLayerTreeView = new QTreeView(this);
auto pScrollArea = new QScrollArea(this);
pScrollArea->setWidget(m_pLayerTreeView);

/* 设置pScrollArea可以通过布局器来调整大小。该属性值默认设置为false,如果该值为false,则外层布局器改变大小
时,pScrollArea不会自动改变大小以适应布局器
*/
pScrollArea->setWidgetResizeable(true); 

// 注意:一定要调用用setMinimumSize函数来设置树视图的最小尺寸,否则会产生前文树视图自己滚动条同样的问题
m_pLayerTreeView->setMinimumSize(300, 600);

也就是说要实现QTreeView水平滚动条按显示内容水平占据的范围自动出现和滚动,则必须创建一个

QScrollArea对象,然后将树视图对象通过QScrollArea对象的setWidget加入到它里面才行,上述代码效果如下:

一般地:当采用上述方法时,要用如下代码将树视图的垂直和水平滚动条禁止显示,否则QScrollArea对象和树视图对象都显示滚动条会很丑,客户也感觉到莫名其妙,客户会想:到底用哪个滚动条呢?


m_pLayerTreeView->setHorizontalSrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_pLayerTreeView->setVerticalSrollBarPolicy(Qt::ScrollBarAlwaysOff);
QT QTreeView\QTreeWidget控件 使用详解 本文详细的介绍了QTreeView、QTreeWidget控件的各种操作,例如:新建界面、控件布局、设置列、设置宽高、设置列表头、设置复选框、设置图标、添加树、删除树、查找树、修改树、设置选中、树排序、事件、信号、槽函数、添加节点、默认选中、.h源文件、cpp源文件、其它文章等等操作。实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。布局管理器可以完成两件事:自动调整控件的位置,包括控件之间的间距、对齐等; 阅读详情

相关推荐

自定义QTreeWidget和QTableWidget控件鼠标滚轮事件

需求:改变QTreeWidget和QTableWidget控件中鼠标滚轮的响应动作,不让鼠标滚轮控制滚动条上下滚动。 实现: 1、在控件的实现函数中重新实现wheelEvent。 void TSSTree::wheelEvent(QWheelEvent* event) { qDebug("The wheel generate the event!"); //需要实现的

Marvel90的专栏 5859

qtreeview控件水平滚动条自动出现方法与避坑

这是在heap内存监视模式下,调试出来的教训,一定要注意这个问题(如果直接调试模式,程序可能不会崩,但是监视内存,也能看出来item所在内存被全部刷为0Xddddddd...了,而heap内存监视模式下是全部刷为0x0000...的,所以程序一运行到那儿就会自动断住了,才能发现问题)。,expandAll函数的时候,就不让那个槽函数执行,而是最后调一下 ui->treeView->resizeColumnToContents(0);比较好的做法是,自己。

biao2488890051的博客 1443

中科蓝讯Downloader配置实战:从软硬开关机到ANC降噪的完整指南

本文提供了中科蓝讯Downloader工具的详细配置实战指南。内容涵盖从基础的软硬开关机选择与配置,到核心的EQ音效调试、触摸按键与入耳检测优化,以及高阶的ANC降噪与电源管理设置。旨在帮助开发者快速掌握关键配置项,高效完成蓝牙耳机产品的功能调试与优化。

s4t5u6v7的博客 508

QTableWidget/QTreeWidget设置自定义滚动条QScrollBar

自定义滚动条

qq_42755842的博客 1665

ArcGISPro应用指南:ArcGISPro制图全流程详解

本文介绍了基于ArcGIS Pro的地图制作基本流程,旨在帮助读者快速掌握从数据加载到地图输出的完整制图操作。文章首先简要概述了GIS技术在当今数据驱动时代的重要作用,并引出ArcGIS Pro作为专业GIS平台的优势与应用价值。随后,内容围绕地图制作的核心步骤展开,包括数据加载、布局创建、地图范围设置以及各类地图要素(如指北针、比例尺、图例、图名)的插入与样式调整。此外,还介绍了如何通过添加图形、文本及动态元素增强地图表达效果,并最终完成地图导出设置与文件输出格式的选择。

weixin_45812624的博客 1357

三分钟解决RKNN-Toolkit2安装失败:从模块报错到成功验证的完整记录

本文详细记录了RKNN-Toolkit2安装失败的解决方案,从环境配置到模型转换实战,特别针对常见的'No module named 'rknn''报错提供了完整修复指南。通过YOLOv8模型转换示例,展示了从ONNX到RKNN格式的完整流程,并分享了在RK3588芯片上的部署优化技巧。

html8的博客 264

QTreeWidget与自定义滚动条绑定

根据treeWidget设置自定义滚动条的最大值与最小值 ui->verticalScrollBar->setRange(myScroll->minimum(), myScroll->maximum());绑定treewidget滚动条的值改变时触发的槽函数 connect(myScroll, SIGNAL(valueChange(int)), this, SLOT(valueChange(int)));

woxiangrini123的博客 943

如何通过CAD图中的坐标来确定是哪个坐标系

地理坐标系:为球面坐标。参考平面地是椭球面,坐标单位:经纬度。以地球参考为例,坐标系就相当于整个地球,而地理坐标系就是椭球状的完整的立体地球。所以我们可以看到生活中的数据与地图是一定含有地理坐标系的,因为他是客观上来说确确实实存在的。投影坐标系:为平面坐标。参考平面地是水平面,坐标单位:米、千米等。这就相当于把地球当成一个橘子,然后一刀切开,把橘子皮平面铺开,这个过程就是地理投影的过程。严谨一点来说就是建立一个参考系统,按照对应位置把椭球体投射到平面。那坐标系统主要有那些呢?北京54。

vjmap的博客 2万+

QTreeView和scrollbar窗口自适应

默认QTreeView的滚动条设置是Qt::ScrollBarAsNeeded.也就是默认值。不修改的话是根据需要显示滚动条的。 我在QTreeView里面添加了item item里面有文本或者点击扩展按钮扩展tree的时候,结果水平方向没有滚动条,导致部分文本不可见。 问题其实处在Column的宽度上。ScrollBar是针对整个QTreeView的Widget,也就是所有colum

groundhappy的专栏 5283

手把手教你用Multisim 14.2仿真一个4.4V的LDO电路(附完整仿真文件)

本文详细介绍了如何使用Multisim 14.2仿真一个4.4V的LDO电路,从环境配置、核心参数解析到电路搭建和仿真调试。通过分压电阻精确计算和瞬态响应测试,帮助读者掌握LDO电路的设计与验证技巧,并附有完整仿真文件供参考。

weixin_28738397的博客 275

改进yolov8|BackBone改进:PWConv、FasterNeXt替换yolov8主干网络

各位哥哥姐姐弟弟妹妹大家好,我是干饭王刘姐,主业干饭,主业2.0计算机研究生在读。和我一起来改进yolov8变身计算机大牛吧!本文中的论文笔记都是刘姐亲自整理,原创整理哦~

weixin_44379985的博客 748

QTreeView树形控件自动显示水平滚动条(resizeColumnToContents())

本文主要总结Qt中QTreeView树形控件自动显示水平滚动条内容。 在Qt中,是默认根据需要显示水平和垂直滚动条的。但是我们发现实践中只能自动显示垂直滚动条,而水平滚条无法自动显示,在显示窗口中多余的内容用省略号“...”代替。 进过查找资料,博主发现,之所以无法自动显示垂直滚动条,是因为树形控件的列宽度比跟显示的内容要宽,而自动显示水平滚动条是内容超出列宽度才会出现。 1.1核心函数讲解...

净无邪博客 6234

8、内存交织技术详解

本文详细解析了内存交织技术的基本原理、工作机制及实现方式,探讨了其在提升内存访问速度和系统性能中的关键作用。文章还分析了内存交织的优缺点、实际应用场景以及与其他优化技术的结合应用,并提出了未来发展的可能方向,为理解与运用该技术提供了全面参考。

g9h0i1的博客 549

项目中遇到QTreeWidget实现的目录树,水平滚动条没有随着展开的内容真多而出现的问题

方法有两种: 方法一: m_leftTreeWidget->header()->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); m_leftTreeWidget->header()->setSectionResizeMode(0, QHeaderView::Resiz...

slfkj的博客 1491

Vue2 - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,vue实现vr看720度全景效果方案讲解及示例代码(兼容电脑PC网页+手机H5移动端页面)

vue全景VR图,vue h5实现全景720预览,vue加载720全景图_vue怎么加载vr图片,vue实现vr全景看房,vue2实现全景效果,加载很慢卡怎么办,实现全景预览的插件,vue显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于vue实现vr全景预览,加载全景图,vue全景预览pannellum插件,vue实现3D全景图,实现720°全景图展示,在VUE 中使用three.js实现全景视频播放,vue项目中使用photo-sphere-viewer实现vr720度

🏆 前端领域优质创作者 3317

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

设置QtreeWidget水平滚动条

//设置treewidget水平滚动条 ui.treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents); ui.treeWidget->header()->setStretchLastSection(false);

neochan1108的专栏 7142

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

设置QT中QTreeWidget的水平横向滚动条按需出现

若只有一列item则需 先设置treeWidget->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); 再treeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); HorizontalScrollBarPolicy设置为needed和alw

Why So Serious? 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

关于QTableWidget里的滚动条问题

<br /><br />找了下,发现在QAbstractScrollArea里面有<br />void setHorizontalScrollBar ( QScrollBar * scrollBar )<br />void setHorizontalScrollBarPolicy ( Qt::ScrollBarPolicy )<br />void setVerticalScrollBar ( QScrollBar * scrollBar )<br />void setVerticalScrollBarPol

hufeng825的专栏 1万+

QTreeView/QTreeWidget自动显示滚筒条

默认QTreeView的滚动条设置是Qt::ScrollBarAsNeeded.也就是默认值。不修改的话是根据需要显示滚动条的。 我在QTreeView里面添加了item item里面有文本或者点击扩展按钮扩展tree的时候,结果水平方向没有滚动条,导致部分文本不可见。 问题其实处在Column的宽度上。ScrollBar是针对整个QTreeView的Widget,也就是所有column的宽度...

aerbeisishan2008的博客 2342

QT QComboBox+QTreeView 实现二级或多级菜单并带滚轮

按我的理解就是QT的控件时基于MVC架构的item相当于模型,treeview相当于视图层,而我们操作控件相当于控制层。他们是一个整体,这里相当于是给combobox这个控件设置了一个treeview的视图,而元素是属于box的,所以model应该给box。创建的QStandardItem为什么吗不给treeviee而是给combobox?实现方式创建个widget把这个box塞进去。

荣耀与梦想来日方长 4769

关于TreeView的简单使用(Qt6.4.1)

TreeView是在Qt6.3中加入的,弥补了Qt中无官方树图。笔者上手尝试了下,虽然有点麻烦,但官方也做了不少简化。本次教程,笔者创建一个简单的示例,以帮助读者使用TreeView。

aggs1990的专栏 3555

PyQt5中设置QtreeWidget水平滚动条

PyQt5中设置QtreeWidget水平滚动条 这个问题,困惑我好一段时间,网上找了很多资料,各种尝试都没解决,隐隐约约在一个论坛中一个作者提到一句话,才得到解决。问题描述如下: 开发过程中,有时候会去开发树形展示的界面,尤其文件管理系统时。由于pyqt5 单独python的文档比较少,大多是基于C++写的文档,所以大家在开发的时候,基本都是经验加摸着石头过河的方式在python中开发Qt界面...

zhangji 3508

QTreeView 一个竖直滚动条引起的问题

一 问题描述 一般情况,当QTreeView的item展开后,数据较多时会展示滚动条,如果item上有右对齐的显示文本,在item展开/收起变化时,竖直滚动条会呈现显示/隐藏变化,右对齐文本会“左右移动”,视觉效果差。原因是滚动条出现后“挤占了”item的空间。 Windows下有该问题,Mac下没有问题。 二 问题展示Demo 环境Win10,Qt5.9.2 新建UI工程,在UI拖入一...

程序员Link 1865

QT5 QTreeWidget的水平横向滚动条按需出现

先上代码: QHeaderView *pHeader = ui->treeView_2->header(); pHeader->setSectionResizeMode(QHeaderView::ResizeToContents); \\代替setResizeMode pHeader->setStretchLastSection(false); 好多人说的 QHeaderView *pHeader=ui.treeWidget->header(

u011529968的博客 2129

设置QTableWidget和QTreewidg滚动行为(自记)

设置QTableWidget和QTreewidg滚动行为(自记)

qq_54501651的博客 968
上一篇: QAbstractItemView子类如:QTreeView、QTableView等子项单元格复选框勾选/取消勾选功能实现
下一篇: 解决postgreSQL 的to_date函数插入时间戳没有时分秒的问题
荆楚闲人
博客等级 码龄20年 3万+粉丝 473原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值