[英]Problem with QSignalMapper and QAction never triger the Slot
嗨,我嘗試將帶有參數的插槽綁定到 QAction 觸發的信號我有這個代碼,上下文菜單工作得很好。 但 OpenPublishWin 從未觸發。
void MyApp::ShowContextMenu(const QPoint& pos) // this is a slot
{
QString groupID;
QPoint globalPos = ui.treeView_mainwindow->mapToGlobal(pos);
QModelIndex modelIndx = ui.treeView_mainwindow->indexAt(pos);
groupID = modelIndx.model()->index(modelIndx.row(),0,modelIndx.parent()).data(Qt::UserRole).toString();
QMenu myMenu;
OpenPublishAction = new QAction(tr("Send"), this);
myMenu.addAction(OpenPublishAction);
connect(OpenPublishAction, SIGNAL(triggered()),m_SignalMapper, SLOT(map()) );
m_SignalMapper->setMapping(OpenPublishAction,groupID);
connect(m_SignalMapper, SIGNAL(mapped(QString)), this, SLOT(OpenPublishWin(QString)));
QAction* selectedItem = myMenu.exec(globalPos);
}
void MyApp::OpenPublishWin(QString gid)
{
WRITELOG(gid)
}
快速查看 QSignalMapper 的Qt文檔(假設這是您根據問題標題使用的)指出映射信號的參數是 const QString&。 我不記得在這種情況下參數是否需要准確用於連接,但這可能是一個因素。
此外,通過將它們包裝在斷言或某種形式的驗證中來仔細檢查您的連接是否正在建立。 如果無法建立連接,Qt 也會打印到控制台。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.