将 QTablewidget 的更改值转换为 QStringList

Getting changed values of a QTablewidget into a QStringList

在我的 qt c++ 应用程序中,我想将 Qtable 小部件的更改值获取到 qt stringList 中!我为此使用了 on_tableWidget_cellChanged() 方法!但是我将 table 小部件的所有值都放入 qstringList

以下是我的代码 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 slots:
    void on_pushButton_clicked();

    void on_tableWidget_cellChanged(int row, int column);


private:
    QStringList changedValues;
    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);
    ui->tableWidget->setColumnCount(1);
    ui->tableWidget->setRowCount(5);
    for(int i=0;i<5;i++){
        ui->tableWidget->setItem(i,0,new QTableWidgetItem(QString::number(i)));
    }
}

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



void MainWindow::on_tableWidget_cellChanged(int row, int column)
{
changedValues<<ui->tableWidget->item(row,column)->text();

}

void MainWindow::on_pushButton_clicked()
{
    QString concat;
    for(int i=0;i<changedValues.size();i++){
        concat+=changedValues[i];
    }
    ui->label->setText(concat);

}

简答:

变化:

  • void on_tableWidget_cellChanged(int row, int column)
  • void MainWindow::on_tableWidget_cellChanged(int row, int column)

至:

  • void on_tableWidget_itemChanged(int row, int column)
  • void MainWindow::on_tableWidget_itemChanged(int row, int column)

解释:

QTableWidget 可以用 setItem() 设置 QTableWidgetItem,或者通过 setCellWidget() 设置小部件,对于它们中的每一个,分别有信号 itemChangedcellChanged .

在你的情况下你有 QTableWidgetItem 所以你必须使用信号 itemChanged.