Seite 1 von 1

[gelöst] Signal aus einem ItemDelegate

Verfasst: 4. Dezember 2015 17:17
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?

Re: Signal aus einem ItemDelegate

Verfasst: 4. Dezember 2015 18:44
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?

Re: Signal aus einem ItemDelegate

Verfasst: 5. Dezember 2015 16:06
von Christian81
Eventuell lieferst Du einen falschen ChildCount für die Row zurück?

Re: Signal aus einem ItemDelegate

Verfasst: 7. Dezember 2015 18:30
von bobcat
Guter Hinweis! Daran lag's ...