在Qt 5.4.1的某些菜单中,setEnabled无法正常工作?

时间:2015-04-19 08:47:38

标签: qt visual-c++ contextmenu qt-creator menubar

这是我在这里遇到的非常奇怪的情况,我试图通过自己解决失败。尝试谷歌,但找不到我在这里面临的问题。 我创建了5个菜单,文件,编辑,查看,渲染和Windows。

“视图”菜单中有一些操作,例如“复制部件”和“粘贴部件”等。

当我触发“复制零件”动作时,应启用“粘贴零件”。所以我在copyShellsAct_cb()Slot中调用pasteShellsAct-> setEnabled(true)。它从未工作/启用。但是如果我在任何其他菜单的动作插槽中调用pasteShellsAct-> setEnabled(true)它可以正常工作。例如,我在File的动作的Slot open()中调用pasteShellsAct-> setEnabled(true),或者在Render的动作的Slot on3D()上调用它,它可以正常工作。

我在想的是,不同行动的老虎机之间可能存在冲突吗?可能是我遗失了什么?我不确定。为什么会这样?

这里有一些代码......

    copyShellsAct = new QAction(tr("Copy Part(s)"), this);
    copyShellsAct->setEnabled(true);
    connect(copyShellsAct, SIGNAL(triggered()), this, SLOT(copyShellsAct_cb()));

    pasteShellsAct = new QAction(tr("Paste Part(s)"), this);
    pasteShellsAct->setEnabled(false);
    connect(pasteShellsAct, SIGNAL(triggered()), this, SLOT(pasteShellsAct_cb()));

void FurApp::fvkQtMenu::copyShellsAct_cb()
{
    // Output of TRUE and FALSE works fine. But action doesn't get Enabled on in View menu. Other menus are working fine. 
    if(pasteShellsAct->isEnabled())
        qDebug() << "TRUE";
    else
        qDebug() << "FALSE";

    pasteShellsAct->setEnabled(true);
}

void FurApp::fvkQtMenu::pasteShellsAct_cb()
{
    pasteShellsAct->setEnabled(false);
}

有什么想法吗?我确定我错过了什么但是什么?

我在Windows 8.1下使用Qt 5.4.1和VS2010。 感谢。

0 个答案:

没有答案