【发布时间】:2018-04-16 03:10:50
【问题描述】:
问题是:
客户面板是从 QTabWidget 派生的,并且有一些带有一些小部件的选项卡
其中操作员(人)可以编辑数据。当任何小部件中的数据发生更改时
我检查了它,我在 QLabel 中设置了粗体字体,这是这个小部件的“伙伴”。我通过设置来做到这一点:
QFont fontBold; fontBold.setBold(true);
widget->setFont(fontBold)
到目前为止一切顺利。
接下来,我希望在其中有修改和未保存数据的选项卡也用粗体标记。即使用户切换到其他选项卡,并且他留下未保存的数据,此选项卡也应保持用粗体标记,直到他返回并保存数据。
这就是问题所在。
如果我为小部件或 QTabBar 设置 setFont - 所有文本或所有选项卡都被标记 粗体。
在我从 QTabWidget 派生的类中,我有:
QTabBar *tabBar() const { return QTabWidget::tabBar(); }
所以我可以访问 tabBar,例如使用 setTabTextColor - 用不同的颜色标记这个标签 - 这是某种解决方案,但其他“伙伴”标签用粗体标记,所以 tabText 应该是粗体。
如果我使用 setStyleSheet 我可以制作粗体,但也有一个问题:
this->tabBar()->setStyleSheet("QTabBar::tab { font:bold }");
如果我使用像活动这样的伪状态,这会将所有选项卡设置为粗体, 已选择,等等 - 当用户切换到其他选项卡时它会发生变化,我需要保持此选项卡为粗体,直到数据被保存。
我可以使用 setProperty,然后为具有特定属性的小部件制作 styleSheet,但真正的问题是,我不能,或者不知道如何访问 QTabBar 中的一个选项卡(例如通过知道它的索引号)
我已经看到,在 QT3 中有 QTab* QTabBar::tab(int) 可以访问特定选项卡,但这不再可用。我阅读了http://qt.nokia.com/doc/4.5/stylesheet-examples.html 和http://qt.nokia.com/doc/4.5/stylesheet-reference.html 并没有找到解决方案。
如何访问 QTabBar 中的特定选项卡(通过其索引号)或如何使用 styleSheet 为特定选项卡设置字体:粗体,当用户切换到其他选项卡时保留粗体字体?
提前致谢。
【问题讨论】:
-
测试我的答案,如果有效,请不要忘记将其标记为正确
标签: c++ qt qt5 qtabwidget qtabbar