C++ 如何设计QScrollBar的句柄并使其具有可伸缩性?

C++ 如何设计QScrollBar的句柄并使其具有可伸缩性?,c++,qt,C++,Qt,我的桌子上有一个样式化的QScrollBar,它使用图像作为滚动条的手柄。控制柄的边缘是圆形的(当然,边缘周围的图像是透明的)。现在的问题是,我似乎无法很好地调整尺寸。 这是一个垂直滚动条,所以到目前为止,我发现唯一可行的方法是设置: background-image: url(:/res/img/scrollbar-vhandle.png); background-repeat: repeat-y; 在我的样式表中。这就是它应该做的,只有我的滚动条看起来很丑,特别是因为圆角 通过从y中心重复

我的桌子上有一个样式化的QScrollBar,它使用图像作为滚动条的手柄。控制柄的边缘是圆形的(当然,边缘周围的图像是透明的)。现在的问题是,我似乎无法很好地调整尺寸。 这是一个垂直滚动条,所以到目前为止,我发现唯一可行的方法是设置:

background-image: url(:/res/img/scrollbar-vhandle.png);
background-repeat: repeat-y;
在我的样式表中。这就是它应该做的,只有我的滚动条看起来很丑,特别是因为圆角

通过从y中心重复一条1px高的线,可以很好地“拉伸”图像。但即使是y型拉伸也应该可以。我就是找不到一个好办法。 像QPushButton这样的东西,其中9个图像可以用于1个按钮以进行缩放,这是可行的,但不幸的是,它似乎不可行

因此,如果有人能让我知道这是否是一种通过样式表(或从QScrollBar派生,并重新绘制手柄)实现的方法,我将非常感激


如果您需要更多信息,请告诉我。

正如您所说,您可以从滚动条继承并重载paintEvent函数。在这里,你几乎可以得到你想要的任何东西,例如,通过重复这一行并绘制它来计算你的新pixmap。实际上,QPixmap中有几个函数可以使这一过程相对容易。

对,我知道这一点。但问题是。。如何只绘制句柄,而不是整个QScrollBar?嗯,您可以考虑使用自定义QStyle派生,但如果您只想为滚动条的句柄设置样式,那就有点过分了。您可以创建正在使用的QStyle的派生,并覆盖仅绘制滚动条句柄的函数,可能的话。困难在于弄清楚所使用的是什么,以及它可能会随着平台的不同而变化的事实。另一个选择是样式代理。事实上,函数总是相同的,但是找出哪一个有时很难。在某些情况下,文档与实现不一致,然后必须进行调试。对于初学者,创建一个滚动条,并打断样式类的drawPrimitive和drawControl。