Qt как вставить строку внутри ячейки в QTableWidget

Возможный дубликат: заполнение некоторых элементов QTableWidgetItems с помощью QString из файла

  1. Как вставлять строки во время выполнения в QTableWidget?
  2. Как вставить жестко закодированные строки в ячейки этого QTableWidget?

Вот что я пробовал, прежде чем застрять... Я вставил QTableWidget с помощью дизайнера Qt.

код: mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

главное окно.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

    /*add stuff inside the table view*/
    QString line = "hello";
    for(int i=0; i<ui->tableWidget->rowCount(); i++)
    { 
        for(int j=0; j<ui->tableWidget->columnCount(); j++)
        {
            QTableWidgetItem *pCell = ui->tableWidget->item(i, j);
            if(!pCell)
            {
                pCell = new QTableWidgetItem;
                ui->tableWidget->setItem(i, j, pCell);
            }
            if(!line.isEmpty())
                pCell->setText(line);
        }
    }
#if 0
    const int rowAdder = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(rowAdder);
    QString str = "hello";
    ui->tableWidget->
#endif
}

MainWindow::~MainWindow()
{
    delete ui;
}

main.cpp

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

person cappy0704    schedule 26.05.2014    source источник
comment
Можете ли вы написать, каково текущее достижение, то есть фактический результат? Остается ли он пустым, потому что начальный столбец и количество строк равны нулю или около того? Правильно ли было установлено количество строк и столбцов в QtDesigner? На сайте примечание, if(!line.isEmpty()) здесь не нужно.   -  person lpapp    schedule 26.05.2014


Ответы (1)


Спасибо @Laszlo Papp, я удалил if(!line.isEmpty()) . Кроме того, я обнаружил, что пропустил создание строк и столбцов, до сих пор я создал только 3 столбца с помощью дизайнера. Я добавил два оператора для добавления строк и столбцов. И это сработало. Вот код: -

главное окно.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    /*add rows and columns*/
    ui->tableWidget->setRowCount(10);
    ui->tableWidget->setColumnCount(3);

    /*add stuff inside the table view*/
    QString line = "hello";
    for(int i=0; i<ui->tableWidget->rowCount(); i++)
    { 
        for(int j=0; j<ui->tableWidget->columnCount(); j++)
        {
            QTableWidgetItem *pCell = ui->tableWidget->item(i, j);
            if(!pCell)
            {
                pCell = new QTableWidgetItem;
                ui->tableWidget->setItem(i, j, pCell);
            }
            pCell->setText(line);
        }
    }
}

Это ожидаемый и полученный результат.

person cappy0704    schedule 27.05.2014