Alles rund um die Programmierung mit Qt
haldol
Beiträge: 19 Registriert: 18. April 2008 22:23
Beitrag
von haldol » 2. Juli 2008 11:37
hallo,
angelehnt an dieses beispiel:
http://www.qtforum.de/forum/viewtopic.php?p=3893 &
habe ich einen delegate geschrieben und versuche nun ihn einzubinden. im unterschied zum beispiel benutze ich statt einem QTableWidget eine QTableView:
Code: Alles auswählen
...
QTableView tableView;
...
cbd = new ComboBoxDelegate;
model = new LogBookModel(stringliste);
tableView.setModel(model);
tableView.setItemDelegate(cbd);
stackedWidget->insertWidget(1, &tableView);
...
das funktioniert so leider nicht. der delegate wird übergangen.
michael
RHBaum
Beiträge: 1436 Registriert: 17. Juni 2005 09:58
Beitrag
von RHBaum » 2. Juli 2008 12:53
der delegate wird übergangen.
Du bist dir also sicher, das Dein createWidget an Deinem ItemDelegate (ComboBoxDelegate) nicht aufgerufen wird ?
check mal, was tableView.itemDelegate(const QModelIndex & index);
fuer nen gultigen index zurueckliefert, obs wirklich deine Instanz ist ...
setzt du das Delegate wirklich bevor du es anzeigst ?
Ciao ...
haldol
Beiträge: 19 Registriert: 18. April 2008 22:23
Beitrag
von haldol » 2. Juli 2008 14:12
Du bist dir also sicher, das Dein createWidget an Deinem ItemDelegate (ComboBoxDelegate) nicht aufgerufen wird ?
das qDebug() in createEditor wird nie ausgeführt.
Code: Alles auswählen
QWidget *ComboBoxDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const
{
qDebug() << "index: " << index.isValid ();
if (index.column() == 2)
{
QComboBox *combo = new QComboBox(parent);
combo->addItem("Url sperren");
combo->addItem("Typ sperren");
connect( combo, SIGNAL(activated(int)), this, SLOT(emitCommitData(int)));
return combo;
}
else
return QItemDelegate::createEditor( parent, option, index );
}
den delegate habe ich wie hier gepostet gesetzt (in 'void MainWindow::connection()').
http://nopaste.debianforum.de/9261
damit sollte er so positioniert sein, das er gesetzt ist, bevor er angezeigt wird. ich hatte ihn zwischenzeitlich auch im konstruktor gesetzt - ohne erfolg.