博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt 怎么给QWidget添加滚动条
阅读量:4186 次
发布时间:2019-05-26

本文共 1092 字,大约阅读时间需要 3 分钟。

在日常工作中,我们经常会遇到这样的问题,界面显示区域就这么大,而我们需要在这个界面上显示的区域却比界面大的多,这个时候我们就会寻找一些方法,让界面能够拖动,就能够在外界条件限制的情况下实现我们的需求。

这种方式是我们最常见的,也是比较常用的一种方法。
Qt中对这些的支持,QMainWindow控件能够自带,但是我们最常用的QWidget控件却默认不支持,这样我们就需要在QWidget上寻求一些突破口。
目前能够知道的是有两种方法:
1、Qt中QScrollArea实现了这种方式,使用也是比较方便,实现过程就是我们需要在父类中先创建一个QScrollArea类的对象,然后将我们需要拖动的QWidget放在这个对象里面,就能够很方便的托动,拖动的这个
滚动条实际上是QScrollArea类中的滚动条,这种方式的实现网上资料比较多,就不做什么解释。
2、使用QScrollBar类和QWidget合作,将QScrollBar拖动时的数值通过换算来移动QWidget同样的距离也能够实现接下来我们来看下这种方式的实现。
首先在QtDesigner中拖曳一个QWidget和一个QScrollBar(使用水平还是垂直根据自己的喜好确定),为了能够比较友好的显示效果,最好QWidget设置比较明显的背景或者标志,这样在后续就能够直接看到效果。然后实现QScroolBar的信号槽,
信号槽的实现有多种方式就不做解释。
接下来看下槽函数的实现:

void Widget::slot_horizontBarValueChange(int nValue){    double dOffSet = static_cast
(nValue) / static_cast
(ui->horizontBar->maximum()); ui->widgetMove->move(-(ui->widgetMove->width() - 350) * dOffSet, 0);}

看上面的函数,我们首先是获取了偏移的比例dOffSet,然后移动了QWidget,移动的距离-(ui->widgetMove->width() - 350) * dOffSet; 其中负号代表方向, 350 表示目前界面已经显示了的大小(宽或高)。

为了整个效果看起来比较和谐,我们可以提前设定QScrollBar的最大值,然后通过比较合适的比例来确定移动的距离。具体怎么样还需要各位自己摸索,毕竟只有自己参与了,学到的才是自己的知识。

目前没有效果,后续有机会再添加。

转载地址:http://ljioi.baihongyu.com/

你可能感兴趣的文章
有谁知道10级的山丘之王是怎么死的?
查看>>
开始学习写日记
查看>>
中国开源众生相-也谈“中国人的开源”
查看>>
Velocity脚本简明教程推荐
查看>>
空(标识)接口的重要性
查看>>
用AspectJ做的一个回合格斗小游戏
查看>>
在EasyJWeb中使用Java Excel API 处理电子表格
查看>>
在Spring中使用replaced-method来进行方法替换
查看>>
开始全心投入《深入Spring 2:轻量级J2EE开发框架原理与实践》
查看>>
使用CGLIB轻松实现延迟加载(Lazyload)
查看>>
好日子里谈开源
查看>>
超轻量级开源ORM系统EasyDBO最后一个测试版(0.9.0)发布
查看>>
让博客成为一种习惯
查看>>
EasyDBO快速上手(1)
查看>>
EasyJF开源Blog系统测试版发布
查看>>
简易Java框架开源论坛系统0.5.0版本发布
查看>>
easyjweb-0.7.0版本发布
查看>>
在一个开源项目的开发中遇到的问题
查看>>
EasyDBO-0.6.0中事务处理中的严重Bug
查看>>
EasyJF团队筹备小组第一次会议情况通告
查看>>