【发布时间】:2015-05-05 16:33:56
【问题描述】:
我目前正在开发一个应用程序,例如使用 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()));
}
这工作正常。当您在我的树形小部件中选择一个文件或文件夹并进行右键单击时,将使用此上下文菜单。我的问题是,即使我选择了一个文件,我也会提出“添加文件夹”选项。您不能在文件中创建文件夹。
我想要的是在选择文件时禁用该选项并在它是文件夹时启用它。
我可以通过获取我重载的 TreeWidgetItem 类来知道它是文件还是文件夹:
谢谢
【问题讨论】:
-
您是否在每次用户右键单击时都创建新的上下文菜单?还是创建一次后重复使用?
标签: c++ qt qtreewidget