gpt4 book ai didi

c++ - 当 QTableWidget 中的单元格已更新时,如何更新 csv 文件?

转载 作者:行者123 更新时间:2023-11-30 02:45:38 25 4
gpt4 key购买 nike

我有一个包含多行的 QTableWidget。当用户编辑单元格时,我希望他们编辑的数据在 csv 文件中自动更新。我知道如何更新 csv 文件,但我不知道如何识别数据何时被编辑并将其从单元格中拉出。我如何识别数据何时更改?

GUI

更新: @Gluttton - 我在主窗口内使用 QTableWidget 并且我使用 for 循环创建项目(见下文)。我在创建表时覆盖了该项目。如果我不保留该项目,我该如何引用它?

主类

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

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

....

for (int x = 0; x < rowOfData.size(); x++)
{
rowData = rowOfData.at(x).split(",");
if((ui->table_Data->rowCount() - x) == 0) ui->table_Data->insertRow(x);
for (int y = 0; y < rowData.size(); y++)
{
QTableWidgetItem *item = new QTableWidgetItem(rowData[y],QTableWidgetItem::Type);
if( y < 43 ) item->setFlags(item->flags() ^ Qt::ItemIsEditable);
ui->table_Data->setItem(x,y,item);
ui->table_Data->repaint();
}
}

@Glutton - 感谢您的帮助!我对您在下面显示的代码进行了两次修改。您可以在下面的代码中看到我所做的更改。

connect (ui->table_Data, SIGNAL ( itemChanged(QTableWidgetItem *) ), this, SLOT ( onItemChanged(QTableWidgetItem *) ) );

....

void MainWindow::onItemChanged( QTableWidgetItem * item)
{
// Where?
int column = item->column ();
int row = item->row ();
qDebug () << "Data in item [" << column << "] ["<< row << "was changed.";
}

最佳答案

你应该订阅信号:

void QTableWidget::itemChanged ( QTableWidgetItem * item )

通过item您可以访问数据:

// In header file.
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow (QWidget * parent = NULL);
QTableWidget * table_data;
...
protected slots:
void onItemChanged ( QTableWidgetItem *);
...
};

// In source file.
#include <QDebug>

MainWindow::MainWindow (QWidget * parent)
{
table_data = new QTableWidget (this);
connect (table_data, SIGNAL (itemChanged ( QTableWidgetItem *) ), this, slot (onItemChanged ( QTableWidgetItem *) ) );
}


void MainWindow::onItemChanged ( QTableWidgetItem * item)
{
// Where?
int column = item->column ();
int row = item->row ();
// What?
QVariant = item->data ();
qDebug () << "Data in item [" << column << "] ["<< row << "] was changed.";
}

关于c++ - 当 QTableWidget 中的单元格已更新时,如何更新 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24270953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com