如何使用Qt创建表格小部件

时间:2015-03-28 02:11:25

标签: qt

我知道如何使用QTableview或QTablewidget 但是如果我必须创建一个包含30,000行的表 似乎QTableview或QTablewidget没用; 那么如何使用Qt创建表格小部件?

2 个答案:

答案 0 :(得分:2)

QTableView或QTableWidget如何无效?

我使用了QTableWidget。此代码显示30000行;

编辑:我在每个单元格中插入了一些数据

table.h

#ifndef TABLE_H
#define TABLE_H

#include <QDialog>

#include <QTableWidgetItem>
#include <QTableWidget>
#include <QHBoxLayout>

class Table : public QDialog {
    Q_OBJECT

public:
    explicit Table(QWidget *parent = 0);
    ~Table();

private:
    QTableWidget *table;

};

#endif // TABLE_H

table.cpp

#include "table.h"
#include "ui_table.h"

Table::Table(QWidget *parent) : QDialog(parent) {

    //doing this creates the table, then you set the row count
    table = new QTableWidget;
    table->setRowCount(30000);
    table->setColumnCount(1);

    //QTableWidgetItem puts data into each cell. Just an example
    for (int i = 0; i < 30000; i++){
        for (int j = 0; j < 1; j++) {
            QTableWidgetItem *item = new     
            QTableWidgetItem(tr("%1").arg(pow(i, j+1)));
            table->setItem(i, j, item);
        }
    }

    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(table);

    setLayout(layout);
}

Table::~Table() {
    delete table;
}

的main.cpp

#include "table.h"
#include <QApplication>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);

    Table *window = new Table;
    window->show();

    return a.exec();
}

答案 1 :(得分:1)

您可以使用QTableView,为它创建自己的模型。无需在任何时刻为用户显示所有30000行。