样式表的QT动态对象名称

问题描述 投票:0回答:1

我有一个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),则所有包含的小部件都带有边框。我只希望第一个具有边框的小部件,只有卡具有边框,而不是其内部小部件。

c++ qt dynamic stylesheet objectname
1个回答
0
投票

根据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}");
© www.soinside.com 2019 - 2024. All rights reserved.