Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何自动保持一个QTextEdit,QAbstractItemView,QAbstractScrollArea等滚动到底部?

如何自动保持一个QTextEdit,QAbstractItemView,QAbstractScrollArea等滚动到底部?
EN

Stack Overflow用户
提问于 2018-08-29 13:49:54
回答 1查看 148关注 0票数 2

一种常见的行为是,如果用户没有在其他地方滚动,则将"log“输出小部件滚动到底部。有一些特定于窗口小部件的解决方案,即特定于QTextEditQListView等,但它们总是需要更改用户代码-而且用户代码已经做了正确的事情,并将数据附加到视图使用的模型中。更改该代码会不适当地将其与视图的细节绑定在一起,因此会有一种糟糕的软件设计味道。

因此,人们可能希望的是一种在不更改用户代码的情况下修改小部件本身行为的方法。此外,也许有一种方法可以在几乎所有从QAbstractScrollArea派生的类中工作

EN

回答 1

Stack Overflow用户

发布于 2018-08-29 13:49:54

一个可行的解决方案只需要访问视图的滚动条,并且可以很容易地适应于使用滚动条的任何小部件-不仅仅是QAbstractScrollArea,即使Qt提供的所有垂直滚动小部件确实派生自这个小部件(它们应该是这样的!)。

允许这种低级方法的关键观察结果是,无论何时将内容追加到小部件,垂直滚动条的范围都会发生变化。因此:

每当scrollbar的range改变时,我们滚动到底部当我们在state.

  • Whenever scrollbar的value改变的viewAtBottom中时,我们更新viewAtBottom以反映scrollbar是否在其范围的末尾(最大值)。

这允许用户在内容中自由滚动而不受干扰,但当滚动条放置在那里时,滚动条将“粘在”范围的末尾。

当然,人们希望有一种方法可以为QScrollBar注入这种行为,但没有任何标志可以启用它-至少在Qt 5.11版本中是这样。

QAbstractScrollArea (即QListViewQListWidgetQTextEditQTextBrowserQPlainTextEdit等任何项目视图)上调用以下函数时,将使其在添加内容和滚动条范围扩大时保持在底部的行为。

下面的代码在Qt5中工作,并且可以简单地修改为Qt4,将lambdas重新实现为助手类中的插槽。直接获取滚动条的函数也可以被分解出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// https://github.com/KubaO/stackoverflown/tree/master/questions/qdebug-window-output-52061269
[...]
void rescrollToBottom(QAbstractScrollArea *view) {
   static const char kViewAtBottom[] = "viewAtBottom";
   auto *scrollBar = view->verticalScrollBar();
   Q_ASSERT(scrollBar);
   auto rescroller = [scrollBar]() mutable {
      if (scrollBar->property(kViewAtBottom).isNull())
         scrollBar->setProperty(kViewAtBottom, true);
      auto const atBottom = scrollBar->property(kViewAtBottom).toBool();
      if (atBottom) scrollBar->setValue(scrollBar->maximum());
   };
   QObject::connect(scrollBar, &QAbstractSlider::rangeChanged, view, rescroller,
                    Qt::QueuedConnection);
   QObject::connect(scrollBar, &QAbstractSlider::valueChanged, view, [scrollBar] {
      auto const atBottom = scrollBar->value() == scrollBar->maximum();
      scrollBar->setProperty(kViewAtBottom, atBottom);
   });
}

有关此代码实际运行的完整示例,请参阅this answer

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52079035

复制
相关文章
python google app engine
云计算的三个层次:issa:paas:saas 云计算有三个层次。图12-1 显示了每个层次,以及对应层次的代表产品。最低层的是IaaS(Infrastructure-as-a-Service),即提供计算机本身基本的计算能力(物理形式或虚拟形式)、存储(通常是磁盘)、计算。亚马逊Web 服务(Amazon Web Services,AWS)提供了弹性计算云(Elastic Compute Cloud,EC2),以及简单存储系统(Simple Storage System,S3)服务,这两者就在IaaS 层面。Google 也提供了IaaS 存储服务,称为Google Cloud Storage。Google App Engine 作为云计算的中间一层,称为Paas(Platform-as-a-Service)。这一层为用户的应用提供执行平台。最高一层是Software-as-a-Service(SaaS)。在这一层,用户只须简单地访问应用,这些应用位于本地,但只能通过因特网访问。SaaS 的例子包括基于Web的电子邮件服务,如Gmail、Yahoo! Mail 和Hotmail。
用户5760343
2022/05/14
5320
python google app engine
折腾Google App Engine:上传应用
作者:matrix 被围观: 2,015 次 发布时间:2013-07-26 分类:兼容并蓄 零零星星 | 无评论 »
HHTjim 部落格
2022/09/26
9990
折腾Google App Engine:上传应用
为MyEclipse安装google app engine插件
我的淘宝客网站准备先放到google app engine上,所以需要为MyEclipse安装google app engine的插件。
明年我18
2019/09/18
7880
为MyEclipse安装google app engine插件
DevOps工具介绍连载(20)——Google App Engine
2008年4月7号,Google在Campfire One上介绍了一种简化创建、运行和构建伸缩性Web应用的工具——Google App Engine。简而言之,Google App Engine允许你本地使用Google基础设施构建Web应用,待其完工之后再将其部署到Google基础设施之上。
顾翔
2020/03/12
2.7K0
基于Google App Engine 的Adsense投放监控系统
         题外话,如果让我选择我最讨厌的一种计算机程序语言,排名第一的是Python。原因只有一个,这种靠缩进来区分块block的语法格式太折磨人了。所以2年前决定学动态语言的时候,我选择了Ruby,当然还有Rails。         但是Google App Engine选择了Python ,没办法,我只好将就这用用了。         言归正传。 google Adsense 是Google的聚宝盆,同时也是很多站长、博客的摇钱树。Google、广告商、广告发布商是一个链条上的利益共同体。在这个链条上Google是掌握 着所有的流量流向、资金流向,正是因为GOOGlE信奉不作恶的理念才让这个链条上的各方安分守己做好自己的事情。         然而追求利益最大化是每个人、每个公司的天性。广告商想用最低的价格发布广告,所以网络上有了Google Adsense 低价网站黑名单;广告发布商想提高自己的收入,所以Google要封杀欺诈点击。         那么,基于Google App Engine 的Adsense投放监控系统能做什么呢?         这个工具是我用一个周末的时间完成的,我也信奉不作恶的原则,因此这个工具只有2个功能:         1、作为广告发布商,告诉你发布了谁的广告。         2、作为广告商、告诉你谁发布了你的广告。      如果你是一位站长、如果你是一名博客写手并且你使用了Google Adsense广告。      那么我强烈推荐您使用:基于Google App Engine 的Adsense投放监控系统 http://20081949.appspot.com/      使用Google App Engine的服务,因此你需要一个Google帐号才能使用这项服务。
田春峰-JCJC错别字检测
2019/02/14
9630
Google 的 Serverless 产品对比:Cloud Run、Cloud Functions、App Engine
Serverless 平台的主要优点是,它们使您可以专注于编写代码,而不必关心管理基础结构,自动扩容或为所用资源支付更多费用。
donghui
2021/02/08
3.4K0
Google 的 Serverless 产品对比:Cloud Run、Cloud Functions、App Engine
Google Earth Engine使用
谷歌的地理引擎,通过一些简单的API我们就可以在几十PB大小的数据内进行弹性运算,以获得我们需要的结果。我们每个人都有权利平等的来享受这个美好的世界。
云深无际
2021/10/20
1.4K0
Google Earth Engine使用
Google Earth Engine(趋势分析)
之前有小伙伴想让做一期利用GEE做植被指数变化的文章,可惜一直没什么时间去做。今天小编终于把这个给做好了。
气象学家
2020/06/29
3.1K0
Google Earth Engine(趋势分析)
Google Earth Engine(区域统计)
在通过GEE计算遥感的地表参量以后,我们就需要对计算出来的数据进行统计。GEE上面画图的功能并不是很齐全,得到的效果也不尽如人意。因此我们就需要将GEE对区域的统计量进行导出,导入到本地以后,再进行绘图。
GIS与遥感开发平台
2022/04/29
1.4K0
Google Earth Engine(区域统计)
Google Earth Engine(监督分类)
本次我们讲一下如何利用GEE做监督分类。训练器我们选择随机森林,数据选择Landsat-8,我们只使用其中的2-7波段。
GIS与遥感开发平台
2022/04/29
1K0
Google Earth Engine(监督分类)
Google Earth Engine(趋势分析)
之前有小伙伴想让做一期利用GEE做植被指数变化的文章,可惜一直没什么时间去做。今天小编终于把这个给做好了。
GIS与遥感开发平台
2022/04/29
1.1K0
Google Earth Engine(趋势分析)
【Docker】:如何在 CentOS 8 中安装 Docker Engine?
The libseccomp library provides an easy to use, platform independent, interface to the Linux Kernel's syscall filtering mechanism. The libseccomp API is designed to abstract away the underlying BPF based syscall filter language and present a more conventional function-call based filtering interface that should be familiar to, and easily adopted by, application developers.
WEBJ2EE
2022/01/04
1.4K0
【Docker】:如何在 CentOS 8 中安装 Docker Engine?
Google Earth Engine(Tensorflow深度学习)
本次我们讲一下如何利用colab训练深度学习(Tensorflow)模型,并上传到Google云平台上面。然后我们再通过GEE进行调用,这样我们在GEE上面运行自己的深度学习模型了。
气象学家
2020/06/17
3.3K1
Google Earth Engine(地物分类统计)
本次我们还是采用MODIS官方的地物分类产品(MCD12Q1.006),空间分辨率为500m,时间分辨率为一年。这个MODIS产品中含有多个地物分类的产品。
GIS与遥感开发平台
2022/04/29
1K0
Google Earth Engine(地物分类统计)
Google Earth Engine(介绍与入门)
Google Earth Engine是Google提供的对大量全球尺度地球科学资料(尤其是卫星数据)进行在线可视化计算和分析处理的云平台。该平台能够存取卫星图像和其他地球观测数据数据库中的资料,并具有足够的运算能力对这些数据进行处理。
GIS与遥感开发平台
2022/04/29
2.2K0
Google Earth Engine(介绍与入门)
Google Earth Engine(Tensorflow深度学习)
本次我们讲一下如何利用colab训练深度学习(Tensorflow)模型,并上传到Google云平台上面。然后我们再通过GEE进行调用,这样我们在GEE上面运行自己的深度学习模型了。
GIS与遥感开发平台
2022/04/29
2.5K1
Google Earth Engine(Tensorflow深度学习)
Google Earth Engine的介绍与入门
Google Earth Engine是Google提供的对大量全球尺度地球科学资料(尤其是卫星数据)进行在线可视化计算和分析处理的云平台。该平台能够存取卫星图像和其他地球观测数据数据库中的资料,并具有足够的运算能力对这些数据进行处理。
郭好奇同学
2020/12/22
2.4K0
Google Earth Engine的介绍与入门
如何在Windows中运行bash
当微软宣布,将在Windows10上面支持bash时,所有的Unix命令行用户都为之雀跃了。上周三,微软发布了一个测试版本,开始支持了这项功能。 为了运行bash,首先要进行几步操作。首先,需要获得Windows10的build 14316。 安装内测版本之后,用户需要切换到开发者模式,从设置>更新(Settings > Updates),安全>开发者(Security > For Developers)打开新的设置页面,选择“Windows Subsystem for Linux (Beta)”,重启
CSDN技术头条
2018/02/11
3.9K0
如何在Windows中运行bash
Google Earth Engine(像元值提取)
本期我们讲一下如何利用GEE对某些点的像元值进行提取,我们在做定量遥感建模时有时候就需要提取一些某些地面点的像元值,然后通过像元值和对应的地面实测值建模。如果通过本地提取,就需要下载大量的遥感数据,同时也会花费大量的时间去编程,运行代码。
GIS与遥感开发平台
2022/04/29
1.9K0
Google Earth Engine(像元值提取)
点击加载更多

相似问题

如何在Google App Engine中运行CherryPy web服务器

10

Google App engine运行缓慢

20

如何在Google App Engine上运行ghost

26

如何在Google App Engine上运行FuelPHP

10

Google App Engine Analog不收取订阅费

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文