QT dynamici c имя объекта для таблицы стилей - PullRequest
0 голосов
/ 20 марта 2020

У меня есть класс виджета 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);
}

и я хочу достать объект изнутри самой карты. cpp в конструкторе

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

и внутри события щелчка мышью

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

но это не работает. если удалить ("#" + objectName), все включенные виджеты имеют границы. Я хочу, чтобы только первый виджет имел границу, только у карты была граница, а не внутренний виджет.

1 Ответ

0 голосов
/ 20 марта 2020

В соответствии с Синтаксис таблицы стилей , вам нужно указать имя класса перед "#".

Попробуйте

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

или

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

Если все еще не работает, прочитайте Почему таблицы стилей не работают при создании подкласса QWidget и использовании Q_OBJECT?

...