QTreeView - Jak dodawać nowe wiersze

0

Witam,

Męczę się z dodaniem nowych wierszy do QTreeView, do tej pory namęczyłem coś takiego:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QStandardItemModel *playList = new QStandardItemModel(2, 2);
    playList->setHeaderData(0, Qt::Horizontal, "#");
    playList->setHeaderData(1, Qt::Horizontal, "Title");

    ui->treeView->setModel(playList);

    connect(ui->actionWyjd_2, SIGNAL(triggered()), this, SLOT(close()));
    connect(ui->actionOtw_rz, SIGNAL(triggered()), this, SLOT(appendToList()));
}

void MainWindow::appendToList()
{
    int row = playList->rowCount();
    playList->insertRow(row);
    playList->setData(playList->index(row, 0), "Test");
    playList->setData(playList->index(row, 1), "Test2");
}

 

Oczywiście kompiluje się, ale nie widzę zmian... Cały czas jest QTreeView pusty...

Pozdrawiam.

0

Z mojej praktyki Qt mogę Ci doradzić,żebyś olał QTreeView i zamiast tego użył QTreeWidget.Odpada mozolne pałowanie się z modelem.
Co do używania klasy QStandardItemModel,to wg dokumentacji powinieneś wsadzać weń QStandardItemy czego nie robisz,i zapewne stąd QTreeView widzi pusty model.

0

Popatrz co zrobiłeś z zmienną playList (zmienna lokalna vs pole obiektu)!

dejmien666 napisał(a)
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QStandardItemModel *playList = new QStandardItemModel(2, 2);  // zmienna LOKALNA playList tracisz kontakt z modelem!
    playList->setHeaderData(0, Qt::Horizontal, "#");
    playList->setHeaderData(1, Qt::Horizontal, "Title");

    ui->treeView->setModel(playList);

    connect(ui->actionWyjd_2, SIGNAL(triggered()), this, SLOT(close()));
    connect(ui->actionOtw_rz, SIGNAL(triggered()), this, SLOT(appendToList()));
}

void MainWindow::appendToList()
{
    int row = playList->rowCount();
    playList->insertRow(row);
    playList->setData(playList->index(row, 0), "Test");  // playList tu jest polem obiektu?
    playList->setData(playList->index(row, 1), "Test2");
}

 

Popatrz na opis http://doc.qt.nokia.com/latest/qstandarditemmodel.html#details.

1 użytkowników online, w tym zalogowanych: 0, gości: 1