有QTableWidget。我需要用行列和文本发送cellChanged信号。我该怎么做?
--
我已经把信号和插槽连接起来了。我需要发送信号。
发布于 2014-09-26 09:15:11
当单元格被更改时,您必须使用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);
发布于 2014-09-26 09:15:31
您必须创建一个插槽函数,并使用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)
相同的方式连接到其他时隙。
https://stackoverflow.com/questions/26055752
复制相似问题