问:如何在QTableWidget中的单元格中插入字符串

时间:2014-05-26 14:30:20

标签: qt insert qstring qtablewidget qtablewidgetitem

可能重复: Filling some QTableWidgetItems with QString from file

  1. 如何在运行时在QTableWidget中插入行?
  2. 如何在此QTableWidget的单元格中插入硬编码字符串?
  3. 这是我在被卡住之前尝试过的... 我已经使用Qt设计器插入了QTableWidget。

    代码: 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
    

    mainwindow.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();
    }
    

1 个答案:

答案 0 :(得分:6)

谢谢@Laszlo Papp,我删除了if(!line.isEmpty())。 此外,我发现我错过了创建行和列,直到现在我只使用设计器创建了3列。我添加了两个用于添加行和列的语句。它奏效了。 这是代码: -

mainwindow.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);
        }
    }
}

这是预期和获得的输出。