通过样式表仅在QTabWidget中应用文本颜色一个特定选项卡
Apply text color one particular tab only in a QTabWidget via stylesheet
我正在尝试在QTabWidget的标签栏中设置特定选项卡的文本颜色。 此特定选项卡可能出现在任何索引中(不一定是第一个、最后一个或中间、已选择或未选择(。例如:包含 30 个选项卡的 QTabWidget 中第 17 个选项卡的文本颜色需要为绿色。 如何使用样式表(而不是使用setTabTextColor API(实现相同的目标? 在样式表中,我们可以设置所有选项卡的文本颜色,或者设置第一个、最后一个或中间选项卡的文本颜色。但是如何通过样式表设置随机选项卡的文本颜色是一个问题。
我建议给你的目标QTabWidget一个对象名称,并使用ID选择器来专门定位它。有关参考,请参阅 https://doc.qt.io/qt-5/stylesheet-syntax.html#selector-types 中有关不同 seelctor 类型的文档。
您可以使用此属性设置对象名称:https://doc.qt.io/qt-5/qobject.html#objectName-prop
- 来自
QTabWidget
的子类(仅用于覆盖其QTabBar
(; - 从
QTabBar
子类并覆盖paintEvent()
。 QTabWidget
子类在构造函数中设置了我们的新选项卡栏:
setTabBar(new MyTabBar(this));
- 然后,这里有一些
QTabBar
子类的示例代码:
.h 文件- 使选项卡文本透明:
explicit MyTabBar(QWidget *parent = nullptr) : QTabBar(parent)
{
setStyleSheet("MyTabBar::tab { color: rgba(0,0,0,0) }");
}
.cpp文件- 画家魔术:
void MyTabBar::paintEvent(QPaintEvent *event)
{
QTabBar::paintEvent(event);
QPainter painter(this);
for(auto i = 0; i < count(); i++)
{
painter.setPen(QColor(YOUR, RANDOM, VALUES));
painter.drawText(tabRect(i), Qt::AlignHCenter | Qt::AlignVCenter, tabText(i));
}
}
相关文章:
- Bash 自动完成一个选项,而不运行应用程序
- C++,当函子不是一个选项时,我如何编写带有自定义函数调用的模板化 RAII 包装器?
- 以不同的方式调度 r 值和 l 值,并使用 sfinae 禁用一个选项
- 将字符指针按顺序存储在 map 中 std::map<char*, int> mymap。将其存储为字符或字符串不是一个选项
- clang,linux是否有一个选项可以在链接时更改共享库名称
- boost::p rogram_options:是否可以将一个选项设置为另一个选项的默认值
- 如何防止用户多次选择一个选项
- 带有一个选项卡的 QTabBar 太宽
- GNU Make:如何在列表的每个条目前面添加一个选项
- 如何在QTabWidget中仅将一个选项卡设置为在Qt中不可移动
- 在双括号 QString 之间仅选择一个选项
- 当选择一个选项时,如何执行另一个c++程序
- c++/boost program_options一个选项禁用另一个选项
- Qt名称冲突,但no_keywords不是一个选项
- 用c++编写一个菜单程序,让用户从选项列表中进行选择,如果输入的不是其中一个选项,则重新打印该列表
- 另一个选项是双指针
- 使用-Wpedantic选项编译c++ 11:是否有一个选项可以只禁用关于未命名结构的警告
- CMake -从另一个CMake文件的GUI设置中删除一个选项
- QTabWidget 选项卡在其中一个选项卡中不显示任何内容
- 从另一个选项卡FLTK中开始的线程隐藏小部件