首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改特定背景颜色的QSplitter儿童

更改特定背景颜色的QSplitter儿童
EN

Stack Overflow用户
提问于 2020-12-14 11:29:19
回答 1查看 203关注 0票数 0

我在Windows 10 Pro上使用4.13.1和QT5.15.1。

我对在Qt中使用样式表很陌生,对考虑QSplitter及其子元素的可能选择器有些困惑。我希望有两个孩子分开一个分把手,并画他们的背景在不同的颜色。

这是一个示例szenario。

代码语言:javascript
复制
QSplitter* splitter = new QSplitter();

QWidget* widgetA = new QWidget();
// add a layout with some further child widgets
QWidget* widgetB = new QWidget();
// add a layout with some further child widgets

splitter->addWidget(widgetA);
splitter->addWidget(widgetB);

layout()->addWidget(splitter);

我试过的地方:

  • widgetA->setStyleSheet("background-color: #ff0000;");适用于widgetA的所有子部件(例如,QLabels、QPushButtons、.),但不适用于它们周围的QLabels、widgetB、句柄和widgetA以下的所有小部件,以及对all.
  • EDIT splitter->setStyleSheet("QSplitter QWidget #Andy {background-color: #ff0000;}");没有影响的widgetB
  • naming widgetA->setObjectName("Tim");splitter->setStyleSheet("QWidget#Tim {background-color: #ff0000;}");,它只将背景应用于两个子小部件中的某个小部件。但是使用splitter->setStyleSheet("QSplitter #Tim {background-color: #ff0000;}"); (同样)没有任何效果。

我将如何分别设置background-color widgetA widgetA widgetB**?** of ,从而在不影响儿童的widgetA或其他拆分子widgetB**?**的情况下

EN

回答 1

Stack Overflow用户

发布于 2020-12-14 15:11:52

我不认为在您的情况下使用widget->setStyleSheet()有任何问题。在这里,我已经测试了setObjectName()的实现

代码语言:javascript
复制
Application::Application(QWidget *parent) :
    QWidget(parent)
{
    //set a base layout for the parent of splitter
    QHBoxLayout *boxLayout = new QHBoxLayout(this);
    this->setLayout(boxLayout);
    //allocate splitter with parent
    QSplitter* splitter = new QSplitter(this);

    QWidget* widgetA = new QWidget();
    widgetA->setObjectName("widgetA");
    widgetA->setLayout(new QVBoxLayout());
    //example buttons as child for widgetA
    QPushButton *p = new QPushButton("0",widgetA);
    widgetA->layout()->addWidget(p);
    p = new QPushButton("1",widgetA);
    widgetA->layout()->addWidget(p);
    p = new QPushButton("2",widgetA);
    widgetA->layout()->addWidget(p);
    p = new QPushButton("3",widgetA);
    widgetA->layout()->addWidget(p);
    //widgetB, all similar to widgetA
    QWidget* widgetB = new QWidget();
    widgetB->setObjectName("widgetB");
    widgetB->setLayout(new QVBoxLayout());
    widgetA->setStyleSheet("QWidget#widgetA{background-color: #ff0000;}");
    widgetB->setStyleSheet("QWidget#widgetB{background-color: #00ff00;}");
    p = new QPushButton("1",widgetB);
    widgetB->layout()->addWidget(p);
    p = new QPushButton("2",widgetB);
    widgetB->layout()->addWidget(p);
    p = new QPushButton("3",widgetB);
    widgetB->layout()->addWidget(p);
    
    //add both widgets to splitter
    splitter->addWidget(widgetA);
    splitter->addWidget(widgetB);

    //add splitter to base layout
    this->layout()->addWidget(splitter);
}

输出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65288248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档