【发布时间】:2019-04-09 14:02:08
【问题描述】:
我正在尝试在我的 Qt 应用程序中创建多级子菜单。
为此,我使用带有目录树的向量,例如:
C:\Users\meine\Main_menu_dir\folder_1\sub1
C:\Users\meine\Main_menu_dir\folder_1\sub2
C:\Users\meine\Main_menu_dir\folder_1\sub2\subsub1
C:\Users\meine\Main_menu_dir\folder_2\sub1
C:\Users\meine\Main_menu_dir\folder_2\sub1\subsub1
C:\Users\meine\Main_menu_dir\folder_2\sub2\subsub1
C:\Users\meine\Main_menu_dir\folder_2\sub2\subsub2
我正在使用boost lib 如下:
#include "boost/filesystem.hpp"
#include <iostream>
namespace fs = ::boost::filesystem;
我正在使用迭代器遍历名称字符串并创建子菜单树:
for (// iter --> iterator in the list of files//)
{
if (fs::is_directory(*iter)) // from boost lib
{
QMenu *subMenu; // create a QMenu object
// name --> name of the directory, i.e.: folder_1, sub1, sub2, ....
subMenu = new QMenu(QString::fromStdString(name), recursiveMenu);
recursiveMenu->addMenu(subMenu);
}
}
以这种方式,我在 folder_1 下创建了所有子菜单(或者,等效地在 Main_menu_dir 下,取决于迭代器中的起点)。 recursiveMenu 是我添加子菜单的菜单。也许我应该更新它,比如:
recursiveMenu = subMenu;
如何将菜单结构更改为具有以下菜单级别:
1. Folder_1
1.1 sub1
1.2 sub2
1.2.1 subsub1
2. Folder_2
2.1 sub1
2.1.1 subsub1
2.1.2 subsub2
....
非常感谢。
【问题讨论】:
-
1.2.1 subsub1必须与1.2 sub2处于同一级别? -
@eyllanesc 不是。 1.2.1 (subsub1) 是我尝试进行迭代过程的 1.2 (sub2) 的子菜单。
标签: c++ algorithm qt c++11 qt5