在Qt 5.4.1中的某些菜单中,setEnabled不起作用?

在Qt 5.4.1中的某些菜单中,setEnabled不起作用?,qt,visual-c++,contextmenu,qt-creator,menubar,Qt,Visual C++,Contextmenu,Qt Creator,Menubar,这是我在这里面临的非常奇怪的情况,我试图自己解决它失败了。我试过谷歌,但找不到我现在面临的问题。 我已经创建了5个菜单,文件、编辑、查看、渲染和窗口 “视图”菜单中有一些操作,如复制零件和粘贴零件等 当触发复制零件操作时,应启用粘贴零件。所以我在copyShellsAct_cb槽中调用pasteShellsAct->setEnabledtrue。它从未工作/启用。但是,如果我在任何其他菜单的操作槽中调用pasteShellsAct->setEnabledtrue,它就可以正常工作。例如,我在文件

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

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

当触发复制零件操作时,应启用粘贴零件。所以我在copyShellsAct_cb槽中调用pasteShellsAct->setEnabledtrue。它从未工作/启用。但是,如果我在任何其他菜单的操作槽中调用pasteShellsAct->setEnabledtrue,它就可以正常工作。例如,我在文件的动作插槽open中调用pasteShellsAct->setEnabledtrue,或者在3D上调用Render的动作插槽,这样就可以了

我想的是,不同行动之间可能存在冲突?也许我错过了什么?我不确定。为什么会这样

这里有一些代码

    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);
}
有什么想法吗?我肯定我错过了什么,但是什么

我在Windows8.1下使用Qt5.4.1和VS2010。
谢谢。

你能创建一个能展示你所描述问题的模型吗?它看起来不错。。我猜初始化的第一部分是在MainWindow构造函数或任何你称之为该类的东西中完成的。。我同意MCVE-您可能会发现问题完全在代码的不同部分,我们无法从您提供的代码中看到。如果没有意外设置pasteShellsAct->setEnabledfalse,您可以只搜索代码;在您的代码中的某个地方…@otopolsky谢谢,是的,这就是问题所在,我已经尝试了所有方法,但找不到问题。我有一个类,我在其中创建所有菜单和动作,该类继承自QObject。我在我的软件中没有看到任何其他问题,但在运行时,仅查看菜单操作不会启用或禁用。其他菜单操作工作正常。感谢您的建议,让我通过搜索或此特定操作再次检查。顺便说一句,您只需编写qDebug isEnabled;而不是使用if。。。菜单真的被禁用了,或者它们看起来只是被禁用了?我几天前修复了这样的错误。