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)
}
絶対に接続をアサートしないでください!いくつかの作業をしているコードをアサートしてチェックするだけです。代わりにverifyを使用してください。 – Raiv
あなたが何をしているのか分かっていて、デバッグしているだけなら、アサートはうまくいくはずです。しかし、今週のちょうどその週の間にロジックに頼って何かをデバッグしたときに、あなたが何を意味するのか分かります。 –
)あなたはそれを削除するのを忘れるまで、アサートはうまくいきます。)これは遅かれ早かれ起こります... – Raiv