【问题标题】:QTabWidget increase tab scroller arrow button widthQTabWidget 增加标签滚动条箭头按钮宽度
【发布时间】:2019-05-03 04:56:22
【问题描述】:

我有一个带有太多标签的 QTabWidget

它们溢出滚动箭头。我想将滚动箭头的宽度增加到默认宽度的两倍以上,以便它们更易于在触摸屏上使用。

有一个QTabWidget StyleSheet example,但我似乎无法让它正常工作。下面的样式表生成了这个截图

QTabBar::scroller { /* the width of the scroll buttons */
    width: 40px;
}

QTabBar QToolButton { /* the scroll buttons are tool buttons */
    width: 15px;
    border-width: 2px;
}

我想要像我编辑的这个屏幕截图这样的东西。

【问题讨论】:

  • 尝试在 main.cpp 中使用:a->setStyle("fusion");
  • 我将 a.setStyle("fusion"); 放入 main.cpp 并且在我的问题中使用样式表时有一个小的改进,箭头按钮更大并且按钮不再覆盖但左箭头不是如图所示,截图:imgur.com/v4mdaz6
  • 有趣的是,当我在 Qt Creator 中使用您的样式表时,它会在表单编辑期间正确显示,但在实际显示期间不会显示。

标签: c++ qt qtabwidget


【解决方案1】:

方法#1:这似乎是一个错误,简单明了。按钮的背景是透明的;但是通过样式表将其设置为白色并设置宽度也无法正常工作。

我可以通过使用样式表来解决这个问题:

QTabBar::scroller {width: 0px;}

如果它不起作用:摆脱它。然后,我创建了两个用于向右滚动的按钮,并将选项卡小部件和按钮水平放置。我将封闭垂直和水平布局的填充设置为零。我将按钮标记为“”,但如果你愿意,你可以更高级。如果希望滚动条下方的标签区域与标签栏和按钮的宽度相同,则需要两个标签小部件:

               QTabWidget1    Button1    Button2

                         Wider QTabwidget2

然后,您设置 QTabWidget1 的高度以便只显示选项卡,并使用样式表将 QTabWidget2 的选项卡栏高度设置为 0:

QTabBar::tab {height: 0px;}

所以只显示选项卡的主体;而不是标签本身。

由于它们不够周到,无法为标签栏公开滚动方法,因此您可以通过 setCurrentIndex(); 更改活动标签来伪造它。它会一直在视野中。

然后,您可以激活或取消激活 按钮,具体取决于第一个或最后一个选项卡是否已处于活动状态。我不想隐藏它们或禁用它们,因为我的应用程序主要是计算和少量修饰。

是的,这是一个 PITA。如果没有更好的解决方法,只需围绕它编写代码。如果生活给了你一个柠檬,那就制造柠檬炸弹,告诉它谁是老大。 (实际上,几乎总是象征性地,只是。)我会在这些日子里提交一份错误报告,当我有时间的时候。

也许有一些神奇的属性可以让这些按钮具有正常的背景和大小;但我不认识他们。

编辑:方法 #2:解决了我的问题,但不会 OP(对于那些遇到同样问题的人。当我没有尝试重新设置这些按钮的样式时,我因为这个问题来到这里。这是一个已知的错误使用 QTabBar 拥有或继承的样式表:"When adding a style sheet to the tabs the navigation scroll arrow buttons become transparent"。(为这个问题投票,它会更快地得到修复。)简单地不使用样式表解决了我的问题。我的在父表单上;然后删除它并将它应用到我只想设置样式的元素上,修复它。

方法#3:您可以尝试使用非样式表属性设置按钮宽度等属性,直到它得到修复;虽然我相信这将意味着继承 QTabWidget 和 QTabBar 来访问 QToolButton 属性。听起来比现在更糟。您可以在标题中使用大约十几行代码来完成它;虽然如果您在 Design 选项卡或 Designer 中使用 Qt Creator,则需要提升选项卡小部件。

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2017-03-23
    • 2011-05-02
    • 2010-11-22
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多