Methoden eines benutzerdefinierten Delegates aufrufen
Verfasst: 27. April 2007 19:20
hallo,
ich versuche schon seit einiger Zeit die in einem QTreeWidget enthaltenen QTreeWidgetItems zu formatieren. (Teile der dargestellten Strings sollen fett hervorgehoben werden)
Hierfür habe ich von der Klasse QItemDelegate eine Klasse abgeleitet und die Methoden
und den Konstruktor überschrieben.
Um zu prüfen inwieweit die Methoden aufgerufen werden (der Debugger funktioniert komischerweise nicht bzw. die Haltepunkte werden ignoriert), habe ich an den Anfang der Funktionsrümpfe jeweils den folgenden Ausdruck gesetzt.
Bis auf den entsprechenden Ausdruck im Konstruktor erfolgt im Ausgabefenster keine Ausgabe. Weshalb ich mal davon ausgehe dass die Methoden nicht durchlaufen worden sind.
Der "Startpunkt" meines Delegates befindet sich im folgenden Codefragment. Könnte ich hierbei etwas vergessen haben
Die Dokumentation und die Beispiele habe ich mir schon mehrfach angesehen. Aber 100-prozentig verstanden habe ich sie mit Sicherheit noch nicht.
Im Gegensatz zu meinem Vorhaben wird in der Dokumentation das benutzerdefinierte Delegate bzw. seine Methoden aufgrund einer Benutzereingabe aufgerufen. Bei mir sollen die Items jedoch bereits bei ihrer Erstellung formatiert werden, was die Sache ja eigentlich vereinfachen müsste. Das Problem scheint nun aber das Fehlen eines Einstiegspunktes für die Formatierung über den Delegate zu sein - oder sehe ich das falsch
Danke
Kai
ich versuche schon seit einiger Zeit die in einem QTreeWidget enthaltenen QTreeWidgetItems zu formatieren. (Teile der dargestellten Strings sollen fett hervorgehoben werden)
Hierfür habe ich von der Klasse QItemDelegate eine Klasse abgeleitet und die Methoden
Code: Alles auswählen
QWidget * QItemDelegate::createEditor ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) const
void QItemDelegate::setEditorData ( QWidget * editor, const QModelIndex & index ) const
void QItemDelegate::setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const
void QItemDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
Um zu prüfen inwieweit die Methoden aufgerufen werden (der Debugger funktioniert komischerweise nicht bzw. die Haltepunkte werden ignoriert), habe ich an den Anfang der Funktionsrümpfe jeweils den folgenden Ausdruck gesetzt.
Code: Alles auswählen
std::cout << "\n Methode 'Methodenbezeichner' wurde aufgerufen" << std::endl;
Bis auf den entsprechenden Ausdruck im Konstruktor erfolgt im Ausgabefenster keine Ausgabe. Weshalb ich mal davon ausgehe dass die Methoden nicht durchlaufen worden sind.
Der "Startpunkt" meines Delegates befindet sich im folgenden Codefragment. Könnte ich hierbei etwas vergessen haben
Code: Alles auswählen
CTreeCompareWidget::CTreeCompareWidget(QWidget *parent)
: QTreeWidget(parent)
{
//...
CTreeWidgetDelegate delegate(0);
this->setItemDelegate(&delegate);Im Gegensatz zu meinem Vorhaben wird in der Dokumentation das benutzerdefinierte Delegate bzw. seine Methoden aufgrund einer Benutzereingabe aufgerufen. Bei mir sollen die Items jedoch bereits bei ihrer Erstellung formatiert werden, was die Sache ja eigentlich vereinfachen müsste. Das Problem scheint nun aber das Fehlen eines Einstiegspunktes für die Formatierung über den Delegate zu sein - oder sehe ich das falsch
Danke
Kai