0

我有一个 Card 小部件类 Card.h 和 Card.cpp 我的代码是;主窗口.cpp

for(int i=0;i<12;i++){
   // sembolList[i] is pixmap , i is cardNumber, wCardArea is parent widget
   Card *card = new Card(sembolList[i],i,ui->wCardArea);
}

我想从内部的Card.cpp中到达对象

this->setObjectName("card" + QString::number(cardNumber));
qDebug() << "objectName:" << this->objectName(); // this is show true object name for example card1  

和 mouseclick 事件内部

this->setStyleSheet("#" + this->objectName() + " {border:5px solid red;border-radius: 10px;padding:5px}");

但这不起作用。如果 remove ("#" + objectName) ,所有包含的小部件都有边框。我只想要第一个有边框的小部件,只有卡片有边框,而不是它的内部小部件。

4

1 回答 1

0

根据The Style Sheet Syntax arcticle,您需要在“#”之前指定一个类名。

尝试

setStyleSheet("Card#" + objectName() + " {border:5px solid red;border-radius: 10px;padding:5px}");

或者

setStyleSheet("QWidget#" + objectName() + " {border:5px solid red;border-radius: 10px;padding:5px}");

如果仍然无法正常工作,请阅读Why do do stylesheets not work when subclassing QWidget and using Q_OBJECT?

于 2020-03-20T15:46:18.140 回答