我想创建一个非常基本的GUI:标签,文本区域。
但我想为我的标签着色,让它们在MAC,Windows和Linux上看起来一样。
所以,我尝试使用样式表:
QTabWidget::pane
{
border-top: 2px solid #1B1B1B;
background-color: #262626;
}
QTabWidget::tab-bar
{
left: 5px;
alignment: left;
background: #3E3E3E;
}
QTabBar::tab
{
background: transparent;
color: #757575;
padding: 15px 5px 15px 5px;
}
QTabBar::tab:hover
{
text-decoration: underline;
}
QTabBar::tab:selected
{
color: #DEF600;
background: qlineargradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #262626, stop: 1.0 #3D3D3D );
}
但即使选项卡看起来很好,也会出现问题:选项卡窗格仍然是透明的......
我可以通过添加:
强制背景颜色QWidget
{
background-color: #262626;
}
但是如你所知,这会改变所有小部件的背景颜色,甚至我的QPlainTextEdit,我仍然希望有白色背景。更烦人的是,这会重置操作系统皮肤并显示丑陋的滚动条(我真的想保留它们)。
有没有办法更改标签窗格背景而无需重新分配所有组件?
答案 0 :(得分:5)
我遇到了同样的问题。我可以用它来解决这个问题:
QTabWidget::pane > QWidget {
background-color: #262626;
}
答案 1 :(得分:3)
试试这个。
QTabWidget::pane {
background: red;
}
您可以阅读this了解详情。还有一件事要评论。您可以使用QObject :: objectName()作为样式表的id选择器。例如,
QTabWidget#myTab { ... }
希望这会有所帮助。
答案 2 :(得分:1)
可以简单地通过:
* {background: green;}
此样式为此小部件及其所有子级设置背景,因此您需要了解一件重要事情。您认为QTabWidget
的区域实际上是QWidget
,其在QTabWidget
内设置为 。您可以通过添加样式轻松检查QTabWidget
的位置以及他们的孩子在哪里
QTabWidget::pane {background: green; padding: 10px;}
绿色区域为QTabWidget
,内部所有内容都与QTabWidgets
子项重叠(QWidget
函数添加的任何addTab()
。
答案 3 :(得分:0)
添加样式
"background-color:rgb(255,255,255)"
到每个标签。
答案 4 :(得分:0)
参考: http://doc.qt.digia.com/qt/stylesheet-syntax.html
选择器类型下的读取ID选择器。您可以指示仅将某个样式应用于给定的对象名称。因此,您可以使用您为tabWidget提供的任何名称。
答案 5 :(得分:0)
尝试使用
启用文档模式 myTab->setDocumentMode(true);
当其他一切都失败时,这对我有用。你可以在代码中完成它,或者在qtcreator中修改属性。
您可能还需要将一些样式应用于窗格,如下所示:
QTabWidget:pane{
background: red;
}
在documentation中了解详情。