RogerWilco77
RogerWilco77

Reputation: 339

QtableWidget does not show data

I have a class that creates random data which I would like to show in a tableview on the main window.

I added via Designer a table view to the main window and called it tblData. I suspect the problem is related to this because when I call the constructor the ui file with some implementation is already there.

I have taken the "Detailed Description" section from http://qt-project.org/doc/qt-5/qtablewidget.html as guidance....

However, the table remains empty. I do not see why... Thank you very much.

include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QStringList headers;
    headers << "Datapoints";

    Dataset *myData;
    myData = new Dataset();
    myData->createRandomData(10);   // create a ten element vector

    QVector<int> data;
    data = myData->getDataVector(); // data vector created in class Dataset
    qDebug() << data;

    int i;
    for (i = 0 ; i < data.size() ; i++){
        QString datapoint;
        datapoint = QString::number(data[i]);
        QTableWidgetItem * newItem = new QTableWidgetItem(datapoint);

        ui->tblData->setItem(i, 0, newItem); // works not


        qDebug() << datapoint;  // works
    }


}

MainWindow::~MainWindow()
{
    delete ui;
}

Upvotes: 3

Views: 7089

Answers (1)

vahancho
vahancho

Reputation: 21220

I think you have to define your table's dimensions before starting to populate it with the data, i.e.

ui->tblData->setRowCount(data.size());
ui->tblData->setColumnCount(1);

The reason is that by default the initial row and column count of the table is 0, so the newly added items are not visible.

Upvotes: 12

Related Questions