子类化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);
后显示出设置的边框样式;
网友评论