从Qt中的滚动条中删除箭头

从Qt中的滚动条中删除箭头,qt,coding-style,scrollbar,Qt,Coding Style,Scrollbar,我正在使用一个小的黑白屏幕,需要滚动条只是一个黑色外框中的黑色滑块。我使用样式表得到了我想要的东西,但在安装时将它们包含在配置中会占用太多空间,因此我无法使用它们。是否可以通过继承QStyle或其他内容来删除箭头? 谢谢这可能是一个愚蠢的答案,但如果您只是在代码中将样式表本身指定为QString参数,而不是为它维护一个单独的文件,它会有帮助吗?您可以尝试更改滚动条的调色板设置(根据设计器,滚动条箭头颜色为“按钮文本”)颜色),但这种方法看起来很简单。。。 更“沉重”的方法是从滚动条小部件和重新实

我正在使用一个小的黑白屏幕,需要滚动条只是一个黑色外框中的黑色滑块。我使用样式表得到了我想要的东西,但在安装时将它们包含在配置中会占用太多空间,因此我无法使用它们。是否可以通过继承QStyle或其他内容来删除箭头?
谢谢

这可能是一个愚蠢的答案,但如果您只是在代码中将样式表本身指定为
QString
参数,而不是为它维护一个单独的文件,它会有帮助吗?

您可以尝试更改滚动条的调色板设置(根据设计器,滚动条箭头颜色为“按钮文本”)颜色),但这种方法看起来很简单。。。 更“沉重”的方法是从滚动条小部件和重新实现绘画方法继承而来,但也有一些方法看起来有些过分了…

因此,您必须选择“小黑客”与“过度杀戮”:)。尽管可能存在另一种解决方案,但您应该创建QStyle的子类(或QComonStyle之类的子类),并重新实现其drawComplexControl()函数,以便自己绘制CC_滚动条元素


阅读QStyle的文档了解更多信息。

要使用setStyleSheet Qt,仍然需要配置为包含样式表内容,这是我无法做到的。啊,好吧,我不知道你指的是Qt配置。事实上,我甚至没有意识到它们是QT中的一个配置选项…;)您说您不能将Qt配置为包含样式表内容。对我来说,这是嵌入式的。您对滑块有什么要求?需要用鼠标操作吗?用键盘?是的,这是嵌入式的。实现滚动条的唯一方法是使用向上和向下按钮,我将从事件过滤器中获取这些按钮作为事件。在同一行中的另一种方法是继承和覆盖复杂控件元素的大小,以便箭头的大小为空,滚动条部分的大小被扩展以填充箭头所在的位置。然后让样式自己绘制组件。哦,这确实是一个很好的解决方案。如果这能奏效,这比重新实现绘图函数要简单:)谢谢你们两位,我在你们的帮助下完成了。最后,我不得不根据箭头所在的原始位置,计算滑块在长度上按比例放大后应该绘制的位置(在drawcontrol中)。就我所能发现的而言,不可能改变复杂控件元素的大小,但这会很好。我认为应该是QStyle::subcrolrect()-让它为QStyle::SC_scrollbaradline和QStyle::SC_ScrollBarSubLine子控件返回一个空的(或者其他一些特制的)QRect。虽然我没有尝试过,但从apidox来看,这是可行的:)无论如何,很好,你找到了一个解决方案:)