- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建有点像标准文件资源管理器 - 左 Pane 用于文件夹树,右 Pane 用于显示所选文件夹中的文件。
QTreeView 和QFileSystemModel 用于显示文件夹。模型的过滤器设置为 QDir::Dirs | QDir::NoDotAndDotDot
只列出目录,没有文件。我只想对具有子文件夹的文件夹显示扩展标记,即。 e.如果某些目录为空或仅包含文件,则它不应该是可扩展的。但是相反, TreeView 保留空目录的扩展标记。这就是问题所在:如何隐藏它们?
我已经在此处、谷歌和 QT 示例中搜索了解决方案 - 没有成功。虽然我认为这个问题很容易回答。目前我唯一的解决方案是子类化 QAbstractItemModel。那是痛苦。
QT 4.8、QT Creator、C++。
下面是演示代码:
#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();
}
最佳答案
最简单的方法:juste 像这样实现 hasChildren:
/*!
* Returns true if parent has any children and haven't the Qt::ItemNeverHasChildren flag set;
* otherwise returns false.
*
*
* \remarks Reimplemented to avoid empty directories to be collapsables
* and to implement the \c Qt::ItemNeverHasChildren flag.
* \see rowCount()
* \see child()
*
*/
bool YourModelName::hasChildren(const QModelIndex &parent) const
{
// return false if item cant have children
if (parent.flags() & Qt::ItemNeverHasChildren) {
return false;
}
// return if at least one child exists
return QDirIterator(
filePath(parent),
filter() | QDir::NoDotAndDotDot,
QDirIterator::NoIteratorFlags
).hasNext();
}
关于qt - QFileSystemModel 和 QTreeView 仅显示目录。如何隐藏空目录的扩展标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545711/
在纯 Ruby 中删除目录中所有文件的安全有效方法是什么?我写了 Dir.foreach(dir_path) {|f| File.delete(f) if f != '.' && f != '..'}
我有一个单元测试(在 VS2008 或 VS2010 中使用 MSTest),我在其中创建了一个这样的文件夹: [TestMethod] public void TestMethod1() {
有人在 CVS 中创建了一个空包。我想在 Intellij 中 checkout 这个包,但 intellij 中没有出现任何内容。 有人知道原因以及如何解决吗? 最佳答案 您必须在结帐 Intell
我是一名优秀的程序员,十分优秀!