0
嗨,我嘗試綁定插槽與參數QAction觸發信號 我有這個代碼,上下文菜單工作很好。但OpenPublishWin從未觸發過。問題與QSignalMapper和QAction從來沒有激怒插槽
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)
}
絕對不要在斷言中包裝連接!新的包裝到斷言任何代碼做一些工作,只是檢查。反而使用驗證。 – Raiv
如果你知道你在做什麼,只是調試assert應該沒問題。不過,我知道你是什麼意思,因爲我只是在這一週內調試了依賴邏輯內部邏輯的東西。 –
好吧,斷言是好的,直到你忘記刪除它))這將發生遲早... – Raiv