[英]QAction Triggered Signal to pass parameter to Slot
所以說我有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)));
顯然,插槽從未被調用,我覺得這是一個簡單的問題,我只是不知道自己缺少什么。
嘗試這個:
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)
{
...
}
}
解決方案是使用具有相同數量輸入的lambda函數,以便信號將正確觸發,但使用該函數將我想要的dataTable本地傳遞給該函數。
connect(copyDataAction, &QAction::triggered, this, [=](){
CopyTableData(DataTable);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.