将QTablewidget的值更改为QStringList

时间:2018-01-04 02:07:53

标签: c++ qt onchange qtablewidget

在我的qt c ++应用程序中,我希望将Qtablewidget的更改值更改为qt stringList!我为此使用了on_tableWidget_cellChanged()方法!但我将表格小部件的所有值都放入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);

}

1 个答案:

答案 0 :(得分:1)

简短回答:

变化:

  • 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可以QTableWidgetItem设置setItem(),或设置setCellWidget()设置小部件,每个设置分别有itemChangedcellChanged信号。< / p>

在您的情况下,您有QTableWidgetItem,因此您必须使用信号itemChanged