[solved] QTableView - Focus im Editorwidget
Verfasst: 20. September 2013 13:06
Hallo alle zusammen,
Ich habe eine Anwendung in der ich sehr viel mit QTableView, QStandardItemModel und einer abgeleiteten Klasse von QItemDelegate arbeite.
Mein Editorfenster, welches im Delegate in createEditor erzeugt wird, betseht aus einem QWidget, welches aber ein QLineEdit und ein QPushButton mit "..." als Text beinhaltet. Über den Pushbutton kann der Anwender vordefinierte Einträge aus einem Dialog auswählen, diese werden nach Bestätigung des Dialogs in das LineEdit übernommen.
Jetzt habe ich folgende Probleme:
Nach dem erzeugen des Editors hat das LineEdit nicht den Focus. Gebe ich ihm den Focus mit setFocus() erhalte ich im Delegate im gegenzug das Event FocusOut, ist auch verständlich, weil das QWidget als Parent den Focus verliert, ignoriere ich aber das FocusOut Event, kann die Anwendung die Signale commitdata und closeEditor nicht auslösen, die Folge ist, dass bei einem click in einen nicht genutzten Bereich der TableView mein Editorfenster erhalten bleibt obwohl der Focus wo ganz anders ist, die geänderten Daten werden demzufolge auch nicht übernommen. setFocusProxy hatte auch nicht den gewünschten Erfolg.
Hat jemand schon mal sowas ähnliches gemacht? Wie bekomme ich das mit dem Focus hin, damit der Cursor nach dem Erzeugen des Editors im LineEdit ist und wie muß ich dann das FocusOut Event behandeln?
Ich hoffe ihr könnt mit meinen Erklärungen was anfangen.
Danke schon mal im Vorraus.
Grüsse
Mario
Ich habe eine Anwendung in der ich sehr viel mit QTableView, QStandardItemModel und einer abgeleiteten Klasse von QItemDelegate arbeite.
Mein Editorfenster, welches im Delegate in createEditor erzeugt wird, betseht aus einem QWidget, welches aber ein QLineEdit und ein QPushButton mit "..." als Text beinhaltet. Über den Pushbutton kann der Anwender vordefinierte Einträge aus einem Dialog auswählen, diese werden nach Bestätigung des Dialogs in das LineEdit übernommen.
Jetzt habe ich folgende Probleme:
Nach dem erzeugen des Editors hat das LineEdit nicht den Focus. Gebe ich ihm den Focus mit setFocus() erhalte ich im Delegate im gegenzug das Event FocusOut, ist auch verständlich, weil das QWidget als Parent den Focus verliert, ignoriere ich aber das FocusOut Event, kann die Anwendung die Signale commitdata und closeEditor nicht auslösen, die Folge ist, dass bei einem click in einen nicht genutzten Bereich der TableView mein Editorfenster erhalten bleibt obwohl der Focus wo ganz anders ist, die geänderten Daten werden demzufolge auch nicht übernommen. setFocusProxy hatte auch nicht den gewünschten Erfolg.
Hat jemand schon mal sowas ähnliches gemacht? Wie bekomme ich das mit dem Focus hin, damit der Cursor nach dem Erzeugen des Editors im LineEdit ist und wie muß ich dann das FocusOut Event behandeln?
Ich hoffe ihr könnt mit meinen Erklärungen was anfangen.
Danke schon mal im Vorraus.
Grüsse
Mario