所以说我有这个QDataTable是QTableWidget
QAction* copyDataAction = new QAction("Copy Data");
DataTable->addAction(copyDataAction);
connect(copyDataAction, SIGNAL(triggered()), this, SLOT(CopyTableData()));
这很好,并且调用了CopyTableData插槽,但是我想要将DataTable引用到CopyTableData(),这样CopyTableData可以是通用的,我可以传递任何我想要的QTableWidget *指针。
如果我这样做
connect(copyDataAction, SIGNAL(triggered()), this, SLOT(CopyTableData(DataTable)));
显然,插槽永远不会被调用,我觉得这是一个简单的问题,我只是不知道我错过了什么。
答案 0 :(得分:0)
试试这个:
http://doc.qt.io/qt-4.8/qobject.html#sender
connect(copyDataAction, SIGNAL(triggered()), this, SLOT(CopyTableData()));
void Myclass::CopyTableData()
{
DataTable* td = qobject_cast<DataTable *>(QObject::sender());
if(td)
{
...
}
}
答案 1 :(得分:0)
解决方案是使用具有相同输入量的lambda函数,以便信号正确触发,但使用它来本地传递我想要的函数的dataTable。
connect(copyDataAction, &QAction::triggered, this, [=](){
CopyTableData(DataTable);
});