QTreeView / QFileSystemModel 设置标头标签
QTreeView / QFileSystemModel set header labels
非常简单的任务,但我没有设法在文档中找到任何有用的东西。我希望QTreeView包含一个名为"Files"的单个列,其中包含来自QFileSystemView的数据。这是我得到的:
QFileSystemModel *projectFiles = new QFileSystemModel();
projectFiles->setRootPath(QDir::currentPath());
ui->filesTree->setModel(projectFiles);
ui->filesTree->setRootIndex(projectFiles->index(QDir::currentPath()));
// hide all but first column
for (int i = 3; i > 0; --i)
{
ui->filesTree->hideColumn(i);
}
这给了我一个带有"名称"标题的列。如何重命名此标头?
QAbstractItemModel::setHeaderData()
应该可以工作。如果没有,则始终可以从QFileSystemModel
继承并覆盖headerData()
。
快速但有点肮脏的技巧(请注意w.hideColumn()):
#include <QApplication>
#include <QFileSystemModel>
#include <QTreeView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTreeView w;
QFileSystemModel m;
m.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
m.setRootPath("C:\");
w.setModel(&m);
w.setRootIndex(m.index(m.rootPath()));
w.hideColumn(3);
w.hideColumn(2);
w.hideColumn(1);
w.show();
return a.exec();
}
你可以子类 QFileSystemModel 并覆盖方法 headerData()。例如,如果您只想更改第一个标题标签,而将其余标签保留为其原始值,则可以执行以下操作:
QVariant MyFileSystemModel::headerData(int section, Qt::Orientation orientation, int role) const {
if ((section == 0) && (role == Qt::DisplayRole)) {
return "Folder";
} else {
return QFileSystemModel::headerData(section,orientation,role);
}
}
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- 从 QFontDatabase 设置 QFont 将所有标签设置为等宽字体?Qt C++
- QTreeView / QFileSystemModel 设置标头标签
- 我可以在 HWND 上设置标签吗?
- 从PC加载图像并将其设置为QT中的标签
- 基于标签高度动态设置窗体的VertScrollBar属性-c++生成器
- cmake findboost 如何设置 ABI 的 -g 标签
- 根据组合框中所选项目设置标签文本 (QT/C++)
- 通过将两个不同的文本框值相乘来设置标签的文本值
- 如何使用KMEANS_USE_INITIAL_LABELS在OpenCV KMEANS中设置初始标签
- 如何设置KDChart饼图项目的标签
- 设置Windows组网映射的标签
- 在Qt中设置线程中的小部件标签文本