1

我有 Qtable 和名为 input.txt 的文件

我试图通过从 input.txt 读取数据来显示 Qtable 小部件上的数据。

该表有 9 行和 9 列。我尝试制作一个 QTable 小部件项目并使用 for 循环将数据放入其中。但无法让它工作。

这是我尝试过的代码

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

QTableWidgetItem *item = new QTableWidgetItem;
item->setText(QString("1"));

bool check = false;

while(!check){

    for (int row = 0; row < 9; ++row) {
        for (int col = 0; col < 9; ++col) {

        }

        item = new QTableWidgetItem();
        item->setText((std::to_string(n)));
        ui->tableWidget->setItem(row,col,item);
        n++;

        if(row ==8 , col ==8){
            check = true;
    }

}

}

这只是一个演示,用于检查我是否可以向每个单元格添加数字。

4

1 回答 1

1

有几件事你必须改变。首先,设置表的行数和列数,使用

QTableWidget::setColumnCount(int columnCount)
QTableWidget::setRowCount(int rowCount)

然后,为您的迭代使用设置大小总是更安全,以确保您不会“越界”。通过以下方式获取它们:

int QTableWidget::columnCount()
int QTableWidget::rowCount()

最后要构造QTableWidgetItem你必须使用QString而不是std::string(参见文档)。

这是一个最小的例子:

QTableWidget* table_widget = new QTableWidget(this);

table_widget->setColumnCount(9);
table_widget->setRowCount(9);

for(int r = 0; r < table_widget->rowCount(); ++r) {
    for(int c = 0; c < table_widget->columnCount(); ++c) {
        table_widget->setItem(r, c, new QTableWidgetItem(QString::number(r+c)));
    }
}

您可能想查看这些教程。它们是一个很棒的资源,可以立即熟悉许多基本功能。您也可以在那里找到有关如何在 Qt 中解析文件的答案。

快乐编码!

于 2015-10-29T04:11:26.673 回答