Entfernen gepunktete Grenze, ohne NoFocus in Windows PyQt

Gibt es ein paar Fragen auf, SO etwa diese, von denen alle scheinen zu sagen, dass der einzige Weg, um entfernen Sie die gepunktete Linie ist um die focusPolicy auf widgets/Element in Frage zu NoFocus. Das funktioniert zwar als eine temporäre Lösung, dies verhindert eine weitere Interaktion mit sagte widgets/Element in das Reich der anderen notwendigen focusEvents.

Sagte Grenze in Frage:

Entfernen gepunktete Grenze, ohne NoFocus in Windows PyQt

Hier ist ein Beispiel, warum dies nicht funktioniert.

  • Ich habe ein Nicht-Modales popup widget, denken Sie eine lightbox für ein Bild.
  • Ich will erkennen, ein mousePressEvent außerhalb des widget und das widget schließen als Ergebnis. Um dies zu tun, sollte ich fangen Sie die focusOutEvent.
  • Jedoch, wenn eine große Mehrheit der widgets in meinem Programm als NoFocus (den Rahmen zu entfernen-Problem), dann kann ich nicht fangen die focusOutEvent weil, Sie Ahnen es, Sie haben keinen Fokus der Politik.

Hier ein weiteres Beispiel:

  • Habe ich ein QTreeWidget, die als Unterklasse definiert, damit ich fangen kann keyPressEvents aus verschiedenen Gründen.
  • Die QTreeWidget ist auch als NoFocus um zu verhindern, dass die Grenze. Da dieser jedoch das widget nie den Fokus hat und daher keine keyPressEvents können gefangen werden.
  • Eine Abhilfe für dieses (notdürftigem, imo) ist verwenden Sie das widget ist grabKeyboard Klasse, die gefährlich ist, wenn ich vergesse, releaseKeyboard später. Dies ist nicht optimal.

So dann ist die Frage, gibt es eine Möglichkeit zu entfernen dieses seltsame (meist nur hässlich) gepunktete Linie ohne ausschalten Fokus für alles, was in meiner app? Vielen Dank im Voraus!

  • Welche Betriebssystem benutzt du?
  • Windows (7), fürchte ich.
  • Gut dann könnten Sie eintauchen in eine benutzerdefinierte paintEvent :-/
InformationsquelleAutor Cryptite | 2012-03-20
Schreibe einen Kommentar