Seite 1 von 1

Combobox in der Table soll aufpoppen

Verfasst: 7. November 2008 11:17
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() );

Re: Combobox in der Table soll aufpoppen

Verfasst: 7. November 2008 12:14
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?

Verfasst: 7. November 2008 12:31
von nasahl
Ich verstehe Deine Anmerkung nicht. Warum ist sie nicht tastaturbedienbar?

Welchen Ansatz würdest Du denn wählen ?

Verfasst: 7. November 2008 12:38
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.

Verfasst: 7. November 2008 14:25
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?