Combobox in der Table soll aufpoppen

Alles rund um die Programmierung mit Qt
Antworten
nasahl
Beiträge: 33
Registriert: 24. Juli 2008 12:30

Combobox in der Table soll aufpoppen

Beitrag von nasahl »

Hallo,

ich habe ein QTableWidget das für seine Zellen Comboboxen kreiert. Jetzt würde ich gerne das Verhalten implementieren, dass eine ComboBox gleich aufpoppt wenn die entsprechende TableCell selektiert ist.

Mein Versuch im QItemDelegate::createEditor() beim Kreieren der QCombobox auch gleich die Methode popup() zu rufen funktioniert nicht. Hat da jemand eine Idee?

Bisheriger Code:

Code: Alles auswählen

class MyDelegate : public QItemDelegate
{
public:
  MyDelegate(QObject *parent = 0) : QItemDelegate( parent ) {}
  QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
  {
      MyComboBox* cb = new MyComboBox(parent);
      cb->popup();
      return cb;
  }
};

QTableWidget table;
table.setItemDelegate( new MyDelegate() );
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Combobox in der Table soll aufpoppen

Beitrag von macman »

nasahl hat geschrieben:ich habe ein QTableWidget das für seine Zellen Comboboxen kreiert. Jetzt würde ich gerne das Verhalten implementieren, dass eine ComboBox gleich aufpoppt wenn die entsprechende TableCell selektiert ist.
Ich kann dir nur davon abraten oder soll die Tabelle per Definition nicht Tastaturbedienbar sein?
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
nasahl
Beiträge: 33
Registriert: 24. Juli 2008 12:30

Beitrag von nasahl »

Ich verstehe Deine Anmerkung nicht. Warum ist sie nicht tastaturbedienbar?

Welchen Ansatz würdest Du denn wählen ?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Wenn eine Zelle selektiert wird, poppt die Combobox auf und bekommt den Fokus. Dann ist die Box tastaturbedienbar und man müsste sie mit ESC schliessen, damit die Tabelle wieder den Fokus hat. Jetzt wechselt man zur nächsten Zelle und es poppt dessen Combobox auf usw. usf.

So stelle ich mir das Ergebnis vor, ohne es getestet zu haben. Ich würde die Comboboxen per Return aufpoppen und wieder schliessen lassen. Dann kann man mit den Cursortasten durch die Tabelle navigieren usw.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
nasahl
Beiträge: 33
Registriert: 24. Juli 2008 12:30

Beitrag von nasahl »

Gibt es auch die Möglichkeit, dass die Combobox gleich aufpoppt und beim nächsten Click auf eine andere Zelle die neue Combobox aufpoppt? Das Problem ist wohl, dass der Focus bei aufgepoppter Combobox nicht mehr bei der Tabelle ist. Deshalb brauche ich immer einen Zusatzclick um die Combobox erst wieder zu schliessen. Mit dem nächsten Click wird erst die neue Combobox aufgemacht.
Kann man diesen Zusatzclick umgehen?
Antworten