【问题标题】:QT dynamic object name for stylesheet样式表的 QT 动态对象名称
【发布时间】:2020-03-20 14:05:03
【问题描述】:

我有一个 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);
}

我想从内部到达对象 卡片.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}");

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

【问题讨论】:

    标签: c++ qt dynamic stylesheet objectname


    【解决方案1】:

    根据The Style Sheet Syntaxarcticle,需要在“#”前指定类名。

    试试

    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 stylesheets not work when subclassing QWidget and using Q_OBJECT?

    【讨论】:

      猜你喜欢
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2010-12-20
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多