1

editable をいじってみると、編集QAbstractItemModel時に古いテキストが削除されないため、見苦しいオーバーレイ効果が生じることに気付きました。

Qt のEditable Tree Model Exampleでこれを再現できます (項目をクリックし、F2 を押し、End を押し、バックスペースを数回押します)。以下のスクリーンショットは、編集中の項目を示しています。「with signal on」というテキストは既に削除されています。オーバーレイのようなものです。古いテキストは背景 (青地に白) にあり、その上に現在のテキスト (青地に黒) があります。

サフィックスの削除中の QTreeView

文字を削除/挿入する場合と同じ効果:

編集中の QTreeView オーバーレイ

スクリーンショットは、gnome シェルを実行している Fedora 19 システムのものです。Fedora 23でもこれを再現できます。

これは gnome シェル (スタイル名: '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 に答える