3

我想制作一个非常基本的 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 我仍然想要一个白色背景。更烦人的是,这会重置操作系统皮肤并显示丑陋的滚动条(我真的很想保持原样)。

有没有一种方法可以更改选项卡窗格背景而无需重新设置所有组件?

4

6 回答 6

10

我有同样的问题。我可以让它与这个一起工作:

QTabWidget::pane > QWidget {
    background-color: #262626;
}
于 2017-07-12T13:01:22.127 回答
3

尝试这个。

QTabWidget::pane {
    background: red;
}

您可以阅读内容了解详细信息。还有一件事要评论。您可以使用 QObject::objectName() 作为样式表的 id 选择器。例如,

QTabWidget#myTab { ... }

希望这可以帮助。

于 2012-10-21T00:33:38.903 回答
1

可以简单地通过:

* {background: green;}

此样式设置了此小部件及其所有子组件的背景,因此您需要了解一件重要的事情。您认为的区域实际上QTabWidgetQWidget设置. 您可以通过添加样式QTabWidget轻松检查他们的孩子在哪里以及他们的孩子在哪里QTabWidget

QTabWidget::pane {background: green; padding: 10px;}

绿色区域是 a QTabWidget,所有内部都被QTabWidgets孩子重叠(任何QWidget添加的addTab()功能)。

于 2016-07-04T23:21:02.353 回答
0

尝试启用文档模式

myTab->setDocumentMode(true);

当其他一切都失败时,这对我有用。您可以在代码中执行此操作,也可以通过在 qtcreator 中调整属性来执行此操作。

您可能仍然需要对窗格应用一些样式,如下所示:

QTabWidget:pane{
background: red;
}

在文档中阅读有关此内容的更多信息。

于 2013-08-29T08:28:03.400 回答
0

请参考: http ://doc.qt.digia.com/qt/stylesheet-syntax.html

阅读选择器类型下的 ID 选择器。您可以指示仅对给定对象名称应用某种样式。因此,您可以使用您为 tabWidget 指定的任何名称。

于 2012-11-01T10:49:47.087 回答
0

添加样式

 "background-color:rgb(255,255,255)"    

到每个选项卡。

于 2012-10-22T03:09:01.193 回答