Hi all.
I'm trying to populate a QTableView with some data. Here is a working snippet:
void MainWindow::FillData() {
qDebug() << "will try to fill some data now";
for (int i=0;i<5;i++) {
QList<QStandardItem*>newRow;
newRow.append(stItem1);
newRow.append(stItem2);
newRow.append(stItem3);
stdModel->appendRow(newRow);
}
ui->tableView->setModel(stdModel);
}
void MainWindow::FillData() {
qDebug() << "will try to fill some data now";
stdModel = new QStandardItemModel();
stdModel->setHorizontalHeaderItem(0,new QStandardItem(QString("Col1")));
stdModel->setHorizontalHeaderItem(1,new QStandardItem(QString("Col2")));
stdModel->setHorizontalHeaderItem(2,new QStandardItem(QString("Col3")));
for (int i=0;i<5;i++) {
QList<QStandardItem*>newRow;
QStandardItem *stItem1 = new QStandardItem("A" + QString::number(i));
newRow.append(stItem1);
QStandardItem *stItem2 = new QStandardItem("B" + QString::number(i));
newRow.append(stItem2);
QStandardItem *stItem3 = new QStandardItem("C" + QString::number(i));
newRow.append(stItem3);
stdModel->appendRow(newRow);
}
ui->tableView->setModel(stdModel);
}
To copy to clipboard, switch view to plain text mode
and here is a non working one (result is empty QTableView, but it has 5 rows and 3 columns):
void MainWindow::FillData() {
qDebug() << "will try to fill some data now";
for (int i=0;i<5;i++) {
QList<QStandardItem*>newRow;
newRow.append(&stItem1);
newRow.append(&stItem2);
newRow.append(&stItem3);
stdModel->appendRow(newRow);
}
ui->tableView->setModel(stdModel);
}
void MainWindow::FillData() {
qDebug() << "will try to fill some data now";
stdModel = new QStandardItemModel();
stdModel->setHorizontalHeaderItem(0,new QStandardItem(QString("Col1")));
stdModel->setHorizontalHeaderItem(1,new QStandardItem(QString("Col2")));
stdModel->setHorizontalHeaderItem(2,new QStandardItem(QString("Col3")));
for (int i=0;i<5;i++) {
QList<QStandardItem*>newRow;
QStandardItem stItem1("A" + QString::number(i));
newRow.append(&stItem1);
QStandardItem stItem2("B" + QString::number(i));
newRow.append(&stItem2);
QStandardItem stItem3("C" + QString::number(i));
newRow.append(&stItem3);
stdModel->appendRow(newRow);
}
ui->tableView->setModel(stdModel);
}
To copy to clipboard, switch view to plain text mode
So as title goes, why do I need to create QStandardItem on the heap. Why do I need this object after it was appended to QStandardModel? I just want to make clear this. Much thanks.
Bookmarks