Problem mit QTreeview

Alles rund um die Programmierung mit Qt
Antworten
spatro
Beiträge: 46
Registriert: 18. Juni 2008 10:54

Problem mit QTreeview

Beitrag 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?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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)
spatro
Beiträge: 46
Registriert: 18. Juni 2008 10:54

Dankeschön

Beitrag von spatro »

Vielen Dank für die Antworten, vielleicht kann ich den Bug irgendwie umgehen.
CLRS530
Beiträge: 155
Registriert: 8. Oktober 2007 18:00

Beitrag von CLRS530 »

Es ist gefixt für 4.6.3. Also am besten nur ein wenig ausharren :wink:
Antworten