2014-09-27 5 views
0

주 창에서 tableview에 표시하려는 임의의 데이터를 만드는 클래스가 있습니다.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());를 호출하면; 당신의'for' 루프 앞에 ui-> tblData-> setColumnCount (1); – vahancho

+0

Magic! 이 작동합니다. 당신이 대답으로 그것을 추가하는 것이 너무 친절해서 해결할 수 있도록 표시 할 수 있습니까? 하지만 정직하게도 QTableWidget으로 각 요소를 초기화하는 것이 왜 충분하지 않은지 이해할 수 없습니다. – RogerWilco77

답변

1

나는 즉

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

이유는 기본적으로 테이블의 초기 행과 열 카운트가 0 인 것을, 당신은 데이터로 채우는 시작하기 전에 테이블의 크기를 정의 할 수 있다고 생각 따라서 새로 추가 된 항목은 보이지 않습니다.

+0

나는 이것에 대해 완전히 잊어 버렸습니다. 당신은 꽤 옳았습니다. +1 – Chernobyl

+0

ok, 정말 고마워요. 원래 Jürgen Wolf "Qt4 Gui-Entwicklung mit C++"(4.5 용)로 시작했는데 271 페이지에서 처음에는 테이블의 크기를 정의했다는 것을 알지 못했습니다. 그의 테이블 크기는 변경되지 않으므로 컴파일 시간에 크기를 정의 할 수 있습니다. 감사! – RogerWilco77

관련 문제