2014-09-27 69 views
0

我有一個類創建隨機數據,我想在主窗口的tableview中顯示。QtableWidget不顯示數據

我通過Designer添加了一個表格視圖到主窗口並將其稱爲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 2014-09-27 14:23:52

+0

魔法!這工作。你會如此友善地將它添加爲答案,以便我可以將其標記爲已解決?但老實說:我不明白爲什麼初始化每個元素爲QTableWidget是不夠的... – RogerWilco77 2014-09-27 20:14:59

回答

1

我認爲你必須先從數據來填充它之前來定義表格的維度,即

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

的原因是,默認情況下,該表的初始行和列數爲0 ,所以新添加的項目aro不可見。

+0

我完全忘了這:)你很完美,+1 – Chernobyl 2014-09-28 08:21:49

+0

好,非常感謝。最初,我從JürgenWolf的「Qt4 Gui-Entwicklung mit C++」(4.5版的一本書)開始,在那裏我沒有意識到他在第271頁中定義了表格的大小。他的表大小不會改變,所以他可以在編譯時定義大小。謝謝! – RogerWilco77 2014-09-28 10:43:24