子类化QWidget使用样式表设置影响子控件解决方法

子类化QWidget使用样式表设置影响子控件解决方法,win+Qt5.7.1:
使用子类化QWidget时,直接this->setStyleSheet("background-color:rgb(242, 242, 242);");会影响子控件,需要设置并使用ObjectName,如下:

 this->setObjectName(tr("YourObjectName"));
 this->setStyleSheet("QWidget#YourObjectName{border:1px solid red;background-color:rgb(242, 242, 242);}");

但是,当子类化Widget上使用布局铺满其他控件且Margin为0,子类化Widget的边框样式可能会被覆盖,例如本人遇到的:

 QVBoxLayout * vBoxLayout = new QVBoxLayout();
 vBoxLayout->addWidget(titleWidget);
 vBoxLayout->addWidget(listWidget);
 vBoxLayout->setSpacing(0);
 vBoxLayout->setMargin(0);//铺满了整个Widget,遮挡掉边框
 this->setLayout(vBoxLayout);

vBoxLayout->setMargin(0);替换vBoxLayout->setContentsMargins(1, 1, 1, 1);vBoxLayout->setMargin(1);后显示出设置的边框样式;

你可能感兴趣的:(子类化QWidget使用样式表设置影响子控件解决方法)