2014-09-27 2 views
0

У меня есть класс, который создает случайные данные, которые я хотел бы показать в виде таблицы в главном окне.QtableWidget не показывает данные

Я добавил через конструктор табличный вид в главное окно и назвал его tblData. Я подозреваю, что проблема связана с этим, потому что, когда я вызываю конструктор, файл ui с некоторой реализацией уже существует.

Я принял раздел «Подробное Описание» от http://qt-project.org/doc/qt-5/qtablewidget.html в качестве руководства ....

Однако таблица остается пустым. Я не понимаю, почему ... Большое вам спасибо.

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; 
} 
+1

Что делать, если вы вызываете 'ui-> tblData-> setRowCount (data.size()); ui-> tblData-> setColumnCount (1); 'перед вашим циклом' for'? – vahancho

+0

Magic! Это работает. Не могли бы вы так выразиться, чтобы добавить его в качестве ответа, чтобы я мог отметить его как решение? Но честно: я не понимаю, зачем инициализировать каждый элемент, поскольку QTableWidget был недостаточным ... – RogerWilco77

ответ

1

Я думаю, что вы должны определить размеры вы таблицы, прежде чем начать заполнять его с данными, т.е.

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

Причина в том, что по умолчанию начальная строка и столбец подсчетом таблицы 0 , поэтому вновь добавленные элементы не видны.

+0

Я полностью забыл об этом :) Вы совершенно правы, +1 – Chernobyl

+0

ОК, большое вам спасибо. первоначально я начал с книги Юргена Вольфа «Qt4 Gui-Entwicklung mit C++» (тот, что для 4.5), и там я не понимал, что на странице 271 он определил размер таблицы в начале. Его размер таблицы не изменяется, поэтому он может определить размер во время компиляции. Благодаря! – RogerWilco77

Смежные вопросы