Seite 1 von 1

Problem mit QTreeview

Verfasst: 19. Mai 2010 09:38
von spatro
Hallo,

ich habe einen QTreeview, der ein von mir erstelltes Model anzeigt. Das funktioniert auch. Wenn aber ein Elternelement nich ausgeklappt ist und man löscht eines seiner Kinder, dann verschwindet das kleine Kreuz vor dem Element, welches anzeigt, ob Kinder vorhanden sind.
Wenn man dann vor das Elternelement klickt, klappt es anstandslos aus und es werden die verbliebenen Unterelemente angezeigt, aber das Symbol wird ist immernoch nicht sichtbar.
Der Fehler tritt nicht auf, wenn das Elternelement während des Löschens ausgeklappt ist.

Kann mir irgendjemand helfen?

Verfasst: 19. Mai 2010 17:08
von upsala
Ich habe ein ähnliches Problem mit Qt4.4 hier festgestellt, habe es aber noch nicht weiterverfolgt.
Es könnte am Model liegen, und sollte event. mit Qt eigenen Models nachgeprüft werden.

Verfasst: 19. Mai 2010 17:25
von franzf

Code: Alles auswählen

#include <QTreeView>
#include <QPushButton>
#include <QStandardItemModel>
#include <QVBoxLayout>

class Win : public QWidget
{
    Q_OBJECT
    QPushButton* btn;
    QStandardItemModel* model;
    bool filled;

private slots:
    void on_btn_clicked() {
        if(!filled) {
            model->clear();
            QStandardItem* parent = new QStandardItem("Parent");
            model->appendRow(parent);;
            parent->appendRow(new QStandardItem("Do not Delete"));
            parent->appendRow(new QStandardItem("To Delete"));
            btn->setText("Delete Item");
            filled = true;
        } else {
            model->item(0)->removeRow(1);
            btn->setText("Clear and refill Model");
            filled = false;
        }
    }

public:
    Win() : filled(false) {
        QVBoxLayout* layout = new QVBoxLayout(this);
        QAbstractItemView* view = new QTreeView;
        layout->addWidget(view);
        btn = new QPushButton("Fill Model");
        layout->addWidget(btn);
        connect(btn, SIGNAL(clicked()), SLOT(on_btn_clicked()));
        model = new QStandardItemModel(this);
        view->setModel(model);
    }
};
Qt-4.6.2 - selbes Verhalten.

Verfasst: 19. Mai 2010 17:57
von upsala
Ein Test mit dem QStandardItemModel hat gerade bestätigt, daß es sogar sein kann, das das [+]-Symbol gar nicht kommt, wenn neue Childs hinzukommen. (4.4)

Verfasst: 19. Mai 2010 18:03
von upsala

Dankeschön

Verfasst: 20. Mai 2010 07:21
von spatro
Vielen Dank für die Antworten, vielleicht kann ich den Bug irgendwie umgehen.

Verfasst: 22. Mai 2010 21:49
von CLRS530
Es ist gefixt für 4.6.3. Also am besten nur ein wenig ausharren :wink: