Qt - QScrollBar 皮肤问题

发布于 2024-12-23 15:49:52 字数 351 浏览 0 评论 0原文

我试图通过重新实现 paintEvent 函数来为 QScrollBar 换肤,但遇到了麻烦。我找不到有关滚动条上按钮的任何信息,并且只能找到有关实际滑块(​​您可以抓取和拖动的手柄)的(有限)信息。我也查看了 QStyle,它仍然只提供有关滚动手柄的信息,而不提供有关按钮的信息。硬编码或使用幻数不是一个选项,因为按钮在不同操作系统上的放置方式不同(请参阅:这里)。有没有什么方法可以以编程方式获取滚动条的布局,以便我可以准确地将按钮和滚动手柄渲染在正确的位置?

I'm trying to skin a QScrollBar by reimplementing the paintEvent function, but I'm having trouble. I can't find any information on the buttons on the scroll bar, and I can only find (limited) information on the actual slider (the handle you can grab and drag). I looked at the QStyle as well and it still only gives information on the scroll handle and not the buttons. Hardcoding or using magic numbers is not an option because the buttons are placed differently on different operating systems (see: Here). Is there any way to programmatically get the layout of the Scrollbar, so I could accurately render the buttons and scroll handle at their correct positions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

[旋木] 2024-12-30 15:49:52

由于绘画本身是由底层样式完成的,而不是 QScrollBar 本身,我建议如下:

  1. 使用 QProxyStyle 覆盖 QScrollBar 的绘制。
  2. 这就是 Qt 绘制 QScrollBar。您可以替代

作为替代方案,我建议使用 Qt 样式表来更改 QScrollBar 的外观

As the painting itself is done by underlying style, not QScrollBar itself I'd suggest following:

  1. Use QProxyStyle to override painting of QScrollBar.
  2. This is how does Qt paints QScrollBar. You can alternate that

As alternative I'd suggest using Qt Style Sheets to change QScrollBar look'n'feel

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文