QWidget重写Qscrollarea CSS

我正在尝试通过大量自定义在QT中实现复杂的UI .

这是我想要实现的(photoshop文件)

screenshot

这是我当前的屏幕,我刚刚发现由某人开发的原始CSS表格具有Qwidget的全局颜色设置,这种颜色在很多小部件中呈现,但问题是它覆盖了Scroll,这可以防止我改变了左侧的颜色(请看蓝点)

screenshot

这个代码是:

QWidget {
    background-color: #1a1d21; /* software canvas background color  */
    border: 0px solid black;
}

QScrollArea {
    background-color: #262a30;
    border: 1px solid black;
}

我尝试删除QWidget的CSS中的颜色代码,这会影响Qscrollarea并且选择的颜色被正确渲染,但是出现了一些问题:

  • 它删除了我所拥有的许多小部件的颜色,现在它都是白色的,现在我将不得不单独指定哪个让我担心,因为考虑到我的应用程序的大小,它不仅耗费时间,而且因为它有时它不会工作 .

  • 我还担心的是,我尝试为特定小部件指定背景颜色并且它不起作用,我已经尝试将占位符对象和类放在一起并分开--QDockWidget / QDockWidget以及正在调用的真实小部件:QTabWidget / tabWidget . 所以我不知道是不是因为我在代码中做错了而没有使用正确的对象来改变颜色,或者如果Qwidget实际上覆盖了颜色(这让我感到困惑,因为我认为那个孩子总是凌驾于父母之上在CSS中)

注意:我是Qt和编程的设计师和新手 .

回答(1)

2 years ago

对于每个Qt小部件,您可以提供唯一的名称 . 然后,您可以使用该名称在样式表(CSS)中设置所需的窗口小部件样式

enter image description here

如果你没有使用Qt Creator,可以使用 QWidget::setObjectName("scrollArea"); 设置小部件名称