QTableWidget。发射细胞变化信号

QTableWidget。发射细胞变化信号,qt,qtablewidget,emit,Qt,Qtablewidget,Emit,有一个QTableWidget。我需要发送带有行、列和文本的cellChanged信号。我该怎么做 -- 我已经将信号连接到插槽。我需要发送信号。您必须使用连接捕捉信号单元格更改(int,int)当单元格更改时: connect(yourTableWidget, SIGNAL(cellChanged(int, int)), this, SLOT(doSomething(int, int))); 您必须创建一个插槽,例如doSomething: public slots: void doSome

有一个QTableWidget。我需要发送带有行、列和文本的cellChanged信号。我该怎么做

--


我已经将信号连接到插槽。我需要发送信号。

您必须使用
连接
捕捉
信号
单元格更改(int,int)
当单元格更改时:

connect(yourTableWidget, SIGNAL(cellChanged(int, int)), this, SLOT(doSomething(int, int)));
您必须创建一个
插槽
,例如
doSomething

public slots:
void doSomething(int row, int column)
{
    // Get cell text
    QString text = yourTableWidget->item(row,column)->text();

    // Emit 
    emit somethingIsDone(row,column,text);
}
创建使用(
int,int,QString
)参数的信号
somethingsdone
(或使用现有信号)(参数可以是另一个顺序)


您必须创建插槽函数,并使用QObject::connect将其与
cellChanged
信号连接

例如:

QTableWidget* widget;
widget = new QTableWidget(this);
connect(widget, SIGNAL(cellChanged(int, int)), otherObject, SLOT(youSlot(int, int));
在插槽中,您可以使用收到的参数获取QTableWidgetItem:行和列编号。在这里你可以发出你自己的信号,也包含文字

QTableWidgetItem* item = widget->item(row, column);
QString textFromItem = item->data(Qt::UserRole);
emit cellChanged(row, column, textFromItem);
当然,之前您必须声明自己的信号:

signals:
   void cellChanged(int row, int col, QString text);
您的信号可以通过与
cellChanged(int,int)

signals:
   void cellChanged(int row, int col, QString text);