当前位置:   article > 正文

Qt控件设置动态样式_qt动态样式

qt动态样式

方法1 每个子控件都设置动态属性

UI文件设置按钮qss:

  1. QPushButton#option {
  2. background: #FFFFFF;
  3. color: #999999;
  4. }
  5. // option和[之间不能有空格
  6. QPushButton#option[itemSelected = "true"] {
  7. background:rgb(65,205,82);
  8. color:white;
  9. }
  10. QLabel#text {
  11. color: #333333;
  12. }
  13. QLabel#text[itemSelected = "true"] {
  14. color:rgb(65,205,82);
  15. }

代码里:

  1. 代码里:
  2. if (selected)
  3. {
  4. ui->option->setProperty("itemSelected", "true");
  5. ui->text->setProperty("itemSelected", "true");
  6. }
  7. else
  8. {
  9. ui->option->setProperty("itemSelected", "false");
  10. ui-> text ->setProperty("itemSelected", " false ");
  11. }
  12. //ui->option->style()->unpolish(ui->option);
  13. //ui->option->style()->polish(ui->option);
  14. ui->option->setStyle(qApp->style());
  15. ui->text->setStyle(qApp->style());

setStyle一行代码即可

方法2 指定父widget的动态属性下的子控件样式,这样不需要每个子控件都setProperty(更简单)

UI文件设置按钮qss:

  1. QWidget#OptionItem QPushButton {
  2. background: #FFFFFF;
  3. color: #999999;
  4. }
  5. QWidget#OptionItem[itemSelected = "true"] QPushButton {
  6. background:rgb(65,205,82);
  7. color:white;
  8. }
  9. QWidget#OptionItem QLabel {
  10. color: #333333;
  11. }
  12. QWidget#OptionItem[itemSelected = "true"] QLabel {
  13. color:rgb(65,205,82);
  14. }

代码里:

  1. connect(ui->optionListWidget, &QListWidget::currentItemChanged, [this](QListWidgetItem* current, QListWidgetItem* previous) {
  2. OptionItem *curItem = qobject_cast<OptionItem*>(ui->optionListWidget->itemWidget(current));
  3. if (curItem)
  4. {
  5. curItem->setProperty("itemSelected", "true");
  6. curItem->setStyle(qApp->style());
  7. }
  8. OptionItem* prevItem = qobject_cast<OptionItem*>(ui->optionListWidget->itemWidget(previous));
  9. if (prevItem)
  10. {
  11. prevItem->setProperty("itemSelected", "false");
  12. prevItem->setStyle(qApp->style());
  13. }
  14. });

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/81356
推荐阅读
相关标签
  

闽ICP备14008679号