使用可编辑的QAbstractItemModel
,我发现在编辑时不会删除旧文本,从而产生难看的叠加效果。
我可以使用Qt中的Editable Tree Model Example重现这一点(点击项目,点击F2,点击结束,点击退格几次)。下面的屏幕截图显示了编辑过程中的项目,“已打开信号”的文本已被删除。它就像一个叠加层。旧文本位于背景中(白色为蓝色),上方显示当前文本位于顶部(黑色为蓝色)。
删除/插入字符时效果相同:
截图来自Fedora 19系统,运行gnome shell。我仍然可以在Fedora 23下重现这一点。
这是用于gnome shell的默认style中的错误(样式名称:'gtk +')还是包装错误?
我可以解决这个问题吗?
明确使用其他样式(例如./editabletreemodel -style windows
或-style fusion
)时,在编辑过程中会正确清除背景。
答案 0 :(得分:1)
问题在于,在您的情况下,QLineEdit
具有透明背景。您可以尝试设置QLineEdit{background-color: white;}
等样式表。
答案 1 :(得分: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;}");
}
// ...
}