草庐IT

windows - 为什么我的 Qt 应用程序即使在非管理员访问权限下也会写入 protected 位置?

我在Windows上使用Qt5.4。我遇到了一个奇怪的问题。我试图在非管理员用户访问级别下将文件写入程序文件目录。我预计它不会写。但是写了!完全没有错误。好的,但真正奇怪的是,只有我的程序可以“看到”该文件,但资源管理器没有显示它,当我尝试dir、dir/ah时它也没有显示>或ls。这是资源管理器可以看到的这是我的程序可以看到的请注意,每次我启动程序并浏览到该文件夹​​时,我的程序都可以看到该文件。这到底是怎么回事? 最佳答案 为什么会这样?文件虚拟化。文件虚拟化是WindowsVista+操作系统用来解决应用程序想要写入只能由管理

c++ - Qt 写入 xml:QIODevice::write (QFile, "D:/logs.xml"): device not open

我正在尝试将数据保存到Qt中的XML文件中。到处都被告知我需要写这样的检查:if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){qDebug()我总是得到“无法打开”的结果。我就是找不到任何相关信息。如果我不使用这个检查,我会得到这样的错误:QIODevice::write(QFile,"D:/logs.xml"):devicenotopen。我只是不知道该怎么办。这是我在教程中尝试使用的完整代码:QDomDocumentdocument;//MakingtherootelementQDomElementroot=document.

windows - 如何从 ReOpenFile 的 QFile 或 QSaveFile 获取窗口句柄?

给定一个QFileDevice实例(一个QFile或QSaveFile)——如何获得nativeWindowsHANDLE文件?这个句柄可以与ReOpenFile一起使用吗? 最佳答案 QFileDevice::handle()返回从QFSFileEnginePrivate::nativeHandle获得的C文件描述符(fd-一个小整数).该文件描述符是您从_open_osfhandle中获得的内容.您需要使用_get_osfhandle返回到HANDLE。structFdHandle{intfd=-1;HANDLEhandle=I

windows - QFile::copy 返回真,即使在 Windows 中复制失败

我有一个名为“src”的QString变量,它包含一个文件名。操作QFile::copy(src,target)工作正常,直到目标是“C:”或“C:/”(我在Windows10中遇到问题)。在这种情况下,操作返回true,即使我没有看到任何实际复制到C:/的文件(事实上,通常我不能在没有管理员权限的情况下将任何内容复制到C:/)。此外,当我调试时,我看到它说它已复制到C://(两个斜杠)。是Qt错误还是我错过了什么?UPD:复制,例如,到C:/Users也需要管理员权限失败,因为它应该(返回false)。Qt版本为5.7。更新:QStringsrc="C:/Stuff/somefile

c++ - 在 QFile 中写入文本

QFile的两种写法有什么区别吗?通过使用write方法:QFilefile("test.txt");if(file.open(QIODevice::WriteOnly|QIODevice::Text)){file.write("MyText\n");}file.close();或者使用QTextStream:QFilefile("test.txt")if(file.open(QIODevice::WriteOnly|QIODevice::Text)){QTextStreamout(&file);out首选哪种方式?性能上有什么不同吗? 最佳答案

c++ - Qt永久删除文件

我不得不在Qt上更改我没有编写的程序。我找到了代码中的位置并且知道我想要它做什么,但我不知道要更改什么,所以寻求帮助。代码如下:QFilefile(path);qint64size=filesize(path);qint64blockSize=10240;boolok=file.open(QIODevice::ReadWrite);if(ok){   QTimet;    t.start();    file.seek(0);    for(inti=0;iblockSize){block=blockSize;}        QByteArraydata;        data.r

c++ - Qt 如何将文件移动到另一个现有目录

我是Qt的初学者,我项目的一部分是将现有文件移动到另一个现有目录?有人可以给我一个具体的例子吗?我不确定我是否应该使用Qfile::rename()。我试着这样写QDir::rename("/home/joshua/test.txt","/home/joshua/test/test_c.txt");但错误是不能在没有对象的情况下调用成员函数'boolQDir::rename(constQString&,constQString&)'QDir::rename("/home/joshua/test.txt","/home/joshua/test/test_c.txt");^对不起大家,都是

c++ - 非阻塞 worker - 中断文件复制

我正在处理非常大的文件,大小超过数百GB。用户需要能够在磁盘之间移动这些文件,并且在没有默认文件管理器的受限系统上。用户有可能意识到他们犯了错误并取消操作,据我所知,用户将不得不等待当前的复制或重命名操作完成。这可能会让他们感到沮丧,因为他们可能会等待几分钟,却发现他们的许多GB文件仍然被复制。在复制的情况下,我可以删除第二个文件,但在我用来移动文件的重命名的情况下,我必须反向重复操作以撤消它,这是NotAcceptable。有没有什么方法可以中断我在QFile的文档中没有看到的copy()和rename(),或者我是否需要将我自己的类放在一起来处理复制和重命名?

c++ - QFile打开文件写入失败

我正在尝试打开文件并向其中写入一些文本数据。QFileout(":/test.txt");if(!out.open(QIODevice::ReadWrite)){QMessageBoxmsgBox;msgBox.setText(out.errorString());msgBox.exec();return;}但它因“未知错误”而失败。(Qt4.6,WindowsXPSP3) 最佳答案 ":/test.txt"是一个resourcefile的名称嵌入到可执行文件中,你不能写入它。例如将文件名更改为“C:/test.txt”。

c++ - QFileInfo exists() 和 isFile() 错误

我正在尝试检查提供的路径是否存在以及它是否是一个文件。所以我写了这段代码:#include#includeboolTool::checkPath(constQString&path){QFileInfofileInfo(QFile(path));return(fileInfo.exists()&&fileInfo.isFile());}我得到以下编译器错误:错误:请求'fileInfo'中的成员'exists',它是非类类型'QFileInfo(QFile)'错误:请求'fileInfo'中的成员'isFile',它是非类类型'QFileInfo(QFile)'为什么?我一遍又一遍地阅