QTreeWidget使用记录(1)
目的:使用QTreeWidget来浏览硬盘目录的文件结构。
功能要求:
1.选择某一磁盘根目录后,显示根目录下的文件和文件夹,且显示对应的图标;
2.单击列表项的箭头区域展开和折叠,展开时加载下一层级的文件和文件夹;
3.单击列表项的图标或者文本区域为选中状态;
4.样式设置,包括边框,表头视图、底色、选中、鼠标Hover,滚动条的样式。
实现方案:
1.选择某一磁盘根目录后,显示根目录下的文件和文件夹,且显示对应的图标;
默认仅显示当前层的文件和文件夹,根据当前层的父目录来搜索即可。代码如下:
QDir rootDir(path);
QFileInfoList fileInfoList = rootDir.entryInfoList();
QFileIconProvider iconProvider;
for (QFileInfo fileInfo : fileInfoList) {
if (fileInfo.fileName() == "." || fileInfo.fileName() == "..")
continue;
QTreeWidgetItem* item = new QTreeWidgetItem();
QString filepath = fileInfo.path();
QString filename = fileInfo.fileName();
item->setText(0, filename);
item->setIcon(0, QIcon(iconProvider.icon(fileInfo)));
item->setData(0, Qt::UserRole, filepath);
item->setData(0, Qt::UserRole + 1, false);
ui.m_treeWidget->addTopLevelItem(item);
item->setExpanded(false);
}
其中设置了Item的文本、ICON和数据,数据的类型定义为用户自定义,使用QFileIconProvider获取到文件或者文件夹的图标。