事情的起因是这样的,因为软件上有多份表格,都需要自定义样式的拖动条。索性我就创建一个类,继承QScrollBar,然后设置这个类的样式,这样当我需要使用的时候,直接使用这个类就行。但是这个也存在风险。
比如我设置QScrollBar是这样的
myscrollbar *bar=new myscrollbar(this);
QTableview *view=new QTableview(this);
view->setVerticalScrollBar(bar);
当我需要获取到拖动条的值是否改变,也就是拖动的时候。
我是这样写的
connect(view->verticalScrollBar(), &QScrollBar::valueChanged,
this, &Widget::setValue);
这个信号槽,本身是没有什么问题的。但是当我打印值的时候,一直不显示,我纳闷了,这啥情况,起初以为是不是没有加入qobject宏的问题,但是后面调查没有问题。我有查看是否信号槽的参数不一致导致,调查之后也没问题。我自定义一个信号之后,连接connect之后,发现值正常显示。
解决方案。
突然我想到我是创建的一个myscrollbar这个类,我直接在这个类里面,打印value值,看是否有改变。果然,这次值就能正常打印了。
所以我自定义一个信号,当myscrollbar的值改变了,就发送这个信号,然后在view中定义接收的函数。这样就能看到改变的值是多少了
本文介绍如何通过自定义QScrollBar类实现统一的滚动条样式,并探讨在Qt中使用自定义滚动条时遇到的问题及解决方法。文章还讨论了如何正确地连接信号和槽以监听滚动条值的变化。

1126

被折叠的 条评论
为什么被折叠?



