2012-04-05 5 views
2

Wenn Sie ein Element in einer QTable bearbeiten, wird standardmäßig der gesamte Text in der Zelle ausgewählt. Ich möchte das vermeiden. Ich kann jedoch nicht finden, wo das passiert.Verhindert, dass QTable den gesamten Text zum Bearbeiten auswählt

Ich schrieb einen einfachen benutzerdefinierten Delegaten, der von QStyledItemDelegate erbt, und gibt ein benutzerdefiniertes Objekt zurück, das einfach von QLineEdit erbt. In diesen Klassen versuchte ich einige Kombinationen von dem, was ich dachte, könnte den "Trick" tun, wie QLineEdit::focusInEvent() deaktivieren, die Auswahl meiner QLineEdit, aber nichts funktioniert.

Am nächsten komme ich, wenn ich auf eine Zelle klicke, stelle ich den ausgewählten Text ein, den ich möchte. Aber zwischen dem Moment, in dem die Zelle angeklickt wird, und dem Moment, an dem meine benutzerdefinierte Auswahl ausgeführt wird, wird trotzdem der gesamte Text ausgewählt, den ich vermeiden möchte.

Irgendeine Idee? Danke,

Antwort

2

Codierung eine benutzerdefinierte QLineEdit wie folgt aus: eine Linie bearbeiten mit einem vorher ausgewählten Text ohne Flackern

class MyLineEdit : public QLineEdit { 
public: 
    MyLineEdit(QWidget*parent=0) : QLineEdit(parent) 
    {} 

    void showEvent(QShowEvent*) 
    { 
    deselect(); 
    setSelection(1,2); // should be configurable 
    } 
}; 

und als Editor-Widget Einstellung kann ich doppelklicken Sie auf die Zellentabelle und erhalten. Wie auch immer, die gesamte Zelle wird in der Mitte des Doppelklickens ausgewählt, weiß nicht, ob dies für Sie akzeptabel ist.

+0

Dies hat den Trick gemacht. Vielen Dank! – piwi

Verwandte Themen