我有一个Card小部件类Card.h和Card.cpp,我的代码是;mainWindow.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);
}
而且我想从内部接触物体卡在承包商中
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),则所有包含的小部件都带有边框。我只希望第一个具有边框的小部件,只有卡具有边框,而不是其内部小部件。
根据Qt docs,您需要在“#”之前指定一个类名:
如果我们希望该属性仅应用于一个特定的QLineEdit,可以使用QObject :: setObjectName()为其命名并使用ID选择器引用它:
myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");
因此,请尝试:
setStyleSheet("Card#" + objectName() + " {border:5px solid red;border-radius: 10px;padding:5px}");