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使用する必要があります( docsを参照)。QStringstd::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 に答える