1

在使用 editableQAbstractItemModel时,我注意到旧文本在编辑时不会被删除,因此会产生难看的叠加效果。

我可以使用 Qt 中的可编辑树模型示例重现这一点(单击项目,按 F2,按结束,按退格键几次)。下面的屏幕截图显示了编辑过程中的一个项目,文本“with signals on”已被删除。它就像一个叠加层。旧文本在背景中(蓝底白字),当前文本在上面(蓝底黑字)。

删除后缀时的QTreeView

删除/插入字符时效果相同:

编辑期间的 QTreeView 覆盖

屏幕截图来自运行 gnome shell 的 Fedora 19 系统。我仍然可以在 Fedora 23 下重现它。

这是用于 gnome shell 的默认样式中的错误(样式名称:'gtk+')还是打包错误?

我可以解决这个问题吗?

当明确使用另一种样式(例如./editabletreemodel -style windows-style fusion)时,背景会在编辑过程中正确清除。

4

2 回答 2

2

问题是,在你的情况下,QLineEdit有一个透明的背景。您可以尝试设置样式表,例如QLineEdit{background-color: white;}.

于 2013-10-29T10:10:30.043 回答
0

在 gtk+ Qt 样式修复之前,可以使用如下样式表解决此问题:

#include <QApplication>
#include <QStyle>

int main(int argc, char **argv)
{
  QApplication a(argc, argv);
  // ...
  if (QApplication::style()
      && QApplication::style()->objectName() == "gtk+"
      && qApp->styleSheet().isEmpty()) {
    qApp->setStyleSheet(
        "QLineEdit, QAbstractSpinBox {background-color:white;}");
  }
  // ...
}
于 2016-03-30T07:44:07.790 回答