[gelöst] Signal aus einem ItemDelegate

Alles rund um die Programmierung mit Qt
Antworten
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

[gelöst] Signal aus einem ItemDelegate

Beitrag von bobcat »

Ich nutze einen QTreeView, ein abgeleitetes QAbstractItemModel und ein abgeleitetes QItemDelegate. Wenn ich aus dem Delegate ein selbst definiertes Signal senden möchte, meint mein Compiler:

Code: Alles auswählen

'MyDelegate::sigExpand': this-Zeiger kann nicht von 'const MyDelegate' in 'MyDelegate &' konvertiert werden
Hier mein Code:

Code: Alles auswählen

MyModel* model = new MyModel(...);
QTreeView* view = new QTreeView();
MyDelegate* myDelegate = new MyDelegate();
...
connect(myDelegate, SIGNAL(sigExpand(QModelIndex)), view, SLOT(expand(QModelIndex)));
view->setModel(model);
view->setItemDelegateForColumn(0, myDelegate);

Code: Alles auswählen

void MyDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const
{
    ...
    emit sigExpand(someIndex);
    ...
}
Das geht vermutlich nicht, weil ich das Signal aus einer const Methode sende? Mein Ziel ist es, dem View mitzuteilen, dass der Tree unterhelb eines bestimmten Index expanded werden soll, nachdem Daten durch den Delegate geändert wurden.
-> Wie könnte ich das am besten machen?
-> Ist es prinzipiell der falsche Weg, zu versuchen, Signale aus einem Delegate zu senden?
Zuletzt geändert von bobcat am 7. Dezember 2015 18:31, insgesamt 1-mal geändert.
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: Signal aus einem ItemDelegate

Beitrag von bobcat »

Der Tree kann expanded werden, nachdem man neue Zeilen eingefügt hat. Diese Methode ist somit die richtige Stelle, um ein Signal zu senden, und sie ist nicht const, ich sende mein Signal also aus:

Code: Alles auswählen

bool MyModel::insertRows(int row, int count, const QModelIndex& parent)
{
    ...
    emit expand(parent);
    ...
}
Jetzt fehlt nur noch das kleine "+" - Icon vor der ersten Spalte in meiner Baumansicht ... ich kann zwar den Baum an der Stelle expandieren und wieder zusammenklappen, aber das "+" - Icon wird nicht angezeigt. Hat jemand eine Idee?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Signal aus einem ItemDelegate

Beitrag von Christian81 »

Eventuell lieferst Du einen falschen ChildCount für die Row zurück?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: Signal aus einem ItemDelegate

Beitrag von bobcat »

Guter Hinweis! Daran lag's ...
Antworten