将readWly设置为

时间:2018-01-07 20:23:04

标签: qt qwidget qtstylesheets

我有qss的Qt样式表(QLineEdit),使用不同的样式进行只读和可编辑。工作正常,但是如果我将QLineEdit切换为readonly(在运行时),样式不会改变。

有没有办法强制更新这种行编辑的样式表?

根据要求,样式表:

QLineEdit {
  background: transparent;
  border: 1px solid green;
  border-radius: 5px;
}

QLineEdit[readOnly="true"] {
  background: rgba(40,40,40);
  border: 1px solid rgba(50,50,50);
}

2 个答案:

答案 0 :(得分:2)

更改编辑后的状态尝试下一个代码:

qApp->style()->unpolish(this);
qApp->style()->polish(this);

在哪里"这"目前的QMainWindow或QDialog。

答案 1 :(得分:0)

这是我自己的发现:

  • polish / unpolish的工作原理
  • 然而,由于我必须为每个QLineEdit对象应用它,它在某种程度上是不方便的,如果我在父级别上执行它(例如在具有多个QLineEdit的对话框上,它对我不起作用多个)

对我有用的是强制进行这样的更新 widget->setStyleSheet(widget->styleSheet());,只需设置相同的样式表即可。我也在顶级小部件上工作,更新多个子元素。