问题标签 [qfileinfo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
223 浏览

qt - 仅从 Qt 中的给定 MIME 类型(无文件本身)获取文件图标

好的,我知道类QFileIconProvider。我也知道QMimeType(和QMimeDatabase)。但令我惊讶的是,我找不到两者之间的简单联系。

所以我需要的是获取操作系统用于给定类型文件的图标。通常,这样做是这样的:

但是,如果我想获得一个不参考特定文件的图标,只针对给定的 MIME 类型怎么办?比如说,我的应用程序使用附件并跨多个设备同步;在某些设备上,附件可能不存在,但我知道该文件的 MIME 类型,所以我仍然希望我的应用程序显示正确的文件图标,仅使用 MIME 类型信息。

作为一个临时解决方案,我发现如果我在上面的代码字符串中将一个不存在的文件传递给 QFileInfo,它确实会检索一个正确的图标(显然,纯粹来自该不存在文件的扩展名),至少在 Linux 中是这样。但是这种方法没有记录,也不能保证它总是有效的。

所以我需要一些可以作为不存在的方法工作的东西 QFileIconProvider().icon(QMimeType &)

0 投票
2 回答
909 浏览

c++ - QFileInfo size() 正在返回快捷方式目标大小

我正在扫描这样的文件夹大小:

这似乎工作正常。

但是,我注意到包含 Windows 快捷方式 ( .lnk) 的文件夹返回的大小比预期的要大得多。原因是返回的是快捷方式目标的大小,而不是快捷方式文件本身的大小。

但根据QFileInfo 文档

在 Windows 上,符号链接(快捷方式)是 .lnk 文件。报告的 size() 是符号链接的大小(不是链接的目标)[...]

所以我的问题是:我在这里做错了什么?如何获取快捷方式文件的大小?

0 投票
1 回答
191 浏览

c++ - 为什么 QFileSystemWatcher 会发出多个信号?而QFileInfo第一次写入零文件大小

更改文件时,信号应该触发 1 次,但对我来说它可以工作多次。

设置功能中,我要求尺寸并打印

更改文档后,信号处理了 2 次,尽管我保存了文档并更改了 1 次。

为什么 QFileSystemWatcher 会发出 2 次信号?

为什么 QFileInfo 在第一次请求时产生零大小?

我编辑文件记事本++

0 投票
1 回答
159 浏览

c++ - QT中如何判断一个项目是文件还是文件夹

我想从路径中指定项目是文件还是文件夹。如何实现这样的功能,它采用路径(QString基于输入)并告诉它是文件还是文件夹?

0 投票
1 回答
75 浏览

pyqt5 - PyQt5 设置 qt_ntfs_permission_lookup

我想isWritable()从 QFileInfo 使用。根据文档,您必须以某种方式设置qt_ntfs_permission_lookup为 1 才能在 Windows 上获得有意义的结果。用于此的 C++ 代码是

如何将 extern 语句“翻译”成 Python?

0 投票
0 回答
186 浏览

c++ - 将复制文件的 QDateTime 调整为源文件的 QDateTime

语境:

我有一个应用程序可以搜索目录中的文件并复制特定文件。

问题:

使用FileCopyExW,我成功地将文件复制到新位置,但是文件的日期和时间不匹配,它可能会偏离一秒或更长时间,如下例所示。

尝试QDateTime用源文件(有时)修改覆盖目标文件无法写入正确的日期,如下面的示例所示。

调试器截图

在此处输入图像描述

此文件的日志输出

失败的随机其他文件的输出

任何想法为什么会发生这种情况以及我该如何解决?


代码示例:

0 投票
1 回答
37 浏览

c++ - (有效)QFileInfo 在 std::sort 中调用 QFileInfo::filename() 时会导致 segv

我需要根据文件名对文件列表进行排序。这些文件是从QDirIterator收集的。

我正在使用此处提供的解决方案。TL;DR - 将std::sortQCollat​​or一起使用。

由于QCollat​​or::compare(QString&, QString&)使用字符串,我需要获取文件路径或文件名(或要排序的每个文件的一些唯一字符串表示形式 - 我需要根据文件名进行排序)

问题:

排序时,我得到QFileInfo::filename()每个文件的,并尝试根据这个值进行排序。但是,我达到了导致 segv 的地步(请参见下面的代码)。调试时,为了找出问题的原因,(在我的具体情况下)a报告为无法访问(参见第二个屏幕截图)。

MVCE 代码:

关于文件路径,我可以说的是它们有些可能会延伸到(并且可能超过 180 个字符的长度,但这小于Windows 限制的最大文件路径长度


SEGV截图来源 在此处输入图像描述

std::sort屏幕截图中的违规行 在此处输入图像描述

堆栈跟踪

1 QFileInfo::fileName qfileinfo.cpp 758 0x65a1a5a 2 ExplorerDialog::<lambda()>::<lambda(const QFileInfo&, const QFileInfo&)>::operator()(const QFileInfo &, const QFileInfo &) 常量 ExplorerView.cpp 309 0x44f30c
3 __gnu_cxx::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo&, const QFileInfo&)>>::operator()<QList::iterator, QList::iterator>(QList ::iterator, QList::iterator) 预定义_ops.h 143 0x462e42
4 std::__unguarded_pa​​rtition<QList::iterator, __gnu_cxx::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo& , const QFileInfo&)>>>(QList::iterator, QList::iterator, QList::iterator, __gnu_cxx::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo&, const QFileInfo&)>>) stl_algo.h 1902 0x462d2c
5 std::__unguarded_pa​​rtition_pivot<QList::iterator, __gnu_cxx::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo&, const QFileInfo&)>>>(QList::iterator, QList ::iterator, __gnu_cxx::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo&, const QFileInfo&)>>) stl_algo.h 1923 0x46198e
6 std::__introsort_loop<QList::迭代器,整数,__gnu_cxx::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo&, const QFileInfo&)>>>(QList::iterator, QList::iterator, int, __gnu_cxx ::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo&,常量 QFileInfo&)>>) stl_algo.h 1952 0x45fed6
7 std::__sort<QList::iterator, __gnu_cxx::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo&, const QFileInfo&)>>>(QList::iterator, QList ::iterator, __gnu_cxx::__ops::_Iter_comp_iterExplorerDialog::r​​efreshAggregatedFiles()::<lambda()::<lambda(const QFileInfo&, const QFileInfo&)>>) stl_algo.h 1968 0x45eadd
8 std::sort<QList::迭代器,ExplorerDialog::r​​efreshAggregatedFiles()::<lambda()>::<lambda(const QFileInfo&, const QFileInfo&)>>(QList::iterator, QList::iterator, ExplorerDialog::<lambda()>::< lambda(const QFileInfo&, const QFileInfo&)>) stl_algo.h 4868 0x45d9be
9 ExplorerDialog::<lambda()>::operator()(void) const ExplorerView.cpp 308 0x44f673
10 std::_Function_handler<void(), ExplorerDialog::r​​efreshAggregatedFiles()::<lambda()>>::_M_invoke(const std::_Any_data &) std_function.h 316 0x45ec7b
11 std::function<void ()>::operator()() const std_function.h 706 0x525442

0 投票
0 回答
34 浏览

qt - 如何通过 QFile 打开服务器上的文件?

假设文件路径是:/root/info.txt

原来文件打不开如何通过QFile打开服务器上的文件