c++ - qt/c++ 上下文菜单 - 禁用一个项目

标签 c++ qt qtreewidget

我目前正在使用 Qt 和 C++ 开发一个应用程序,例如浏览器。

我创建了一个上下文菜单以允许右键单击操作,例如删除、重命名和添加文件夹。

void MyTreeWidget::createContextMenu() {    
    contextMenu = new QMenu();
    setContextMenuPolicy(Qt::ActionsContextMenu);

    addFolderAction = new QAction("Add Folder", contextMenu);
    addAction(addFolderAction);
    connect(addFolderAction, SIGNAL(triggered()),this,SLOT(onAddFolderActionTree()));

    deleteAction = new QAction("Delete", contextMenu);
    addAction(deleteAction);
    connect(deleteAction, SIGNAL(triggered()),this,SLOT(onDeleteAction()));

    RenameAction = new QAction("Rename", contextMenu);
    addAction(RenameAction);
    connect(RenameAction, SIGNAL(triggered()),this,SLOT(onRenameAction()));

}

这工作正常。当您在我的 treewidget 中选择文件或文件夹并右键单击时,将使用此上下文菜单。我的问题是,即使我选择了一个文件,我也建议使用“添加文件夹”选项。您不能在文件中创建文件夹。

我想要的是在选择文件时禁用该选项,并在选择文件夹时启用它。

通过获取我重载的 TreeWidgetItem 类,我可以知道它是文件还是文件夹:

谢谢

最佳答案

您可以禁用 QAction。在这种情况下,“添加文件夹”菜单项将被禁用:

addFolderAction->setEnabled(false);

关于c++ - qt/c++ 上下文菜单 - 禁用一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30058543/

相关文章:

python - 向 QTreeWidget 添加一行

python - 跟踪 QTreeWidget 中的更改

c++ - <algorithm> 是否包含 <cmath>?

c++ - Qt中如何实现OpenSSL?

c++ - Qt 的 Pimpl 习惯用法

c++ - QSharedPointer VS std::tr1::shared_ptr VS boost::tr1::shared_ptr

c++ - QTreeWidgetItem 更改 - 检测 Enter/ESC

c++ - 选择替代实现和前向声明

c++ - 将 X 坐标从一种分辨率转换为另一种分辨率

c++ - 成员变量如何与专门的类模板一起使用?