有QTableWidget。我需要发送带有行列和文本的cellChanged信号。我怎么能这样做?
-
我已将信号与插槽连接。我需要发送信号。
答案 0 :(得分:4)
更改单元格时,您必须使用connect
来抓住signal
cellChanged(int,int)
:
connect(yourTableWidget, SIGNAL(cellChanged(int, int)), this, SLOT(doSomething(int, int)));
您必须创建slot
,例如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);
}
创建使用(somethingIsDone
)参数的信号int,int,QString
(或使用现有信号)(参数可以按其他顺序)
signals:
void somethingIsDone(int row, int column, QString text);
答案 1 :(得分:1)
您必须创建一个插槽函数并使用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)