使用QFile::copy()的进度条?
我正在制作一个在QT中复制文件的程序.我想知道如何与bool QFile::copy(const QString & fileName, const QString & newName)一起使用QProgressBar. copy函数甚至可以吗?可以暂停复制的过程吗? 解决方案 您无法使用static Qfile :: copy()方法进行此操作. 正如Maciej所述,在您需要写自己的课之前.它应该使用两个QFILE对象,一个用于读取一个用于编写的对象.将数据分为部分(例如整个文件大小的1%),并在每个部分后发出进度信号.您可以将此信号连接到进度对话框. 如果您需要在后台工作,则应使用Qthread实施. 首先尝试确定您是否需要一类,该类使复制工作不合格(不阻止GUI)或同步(阻止GUI).后者更容易编程,但大多数情况下不是预期的(例如,如果GUI被阻止,您无法通过按钮单击或暂停复制操作). 您可以在这里查看相当大的QT 4类: http://docs.
88 2023-03-31
编程技术问答社区
QSocketNotifier和QFile::readAll()
目前在SBC(Olimex A20)的GPIO上工作,我对QSocketNotifier有问题.在我的GPIO上,我正在使用具有中断能力的别针(对于那些想了解更多信息的人: 那是我的中断课程: OLinuXinoGPIOEdge::OLinuXinoGPIOEdge(int num) : m_gpioNumber(num), m_value(false), m_direction(IN) { this->exportGPIO(); // equivalent to 'echo num > export' this->setDirection(IN); // for security m_fileValue.setFileName("/sys/class/gpio/gpio20_pi11"); // the path of the pin this->setEdge(BOTH); // edge's detection (both/falli
6 2023-03-09
编程技术问答社区
QFile:如何有效地从k,到k+L中只读取字节?
我可以从qfile从k+l读取字节,从qfile读取第一个整个文件中的qbytearray if (!file.open(QIODevice::ReadOnly)) //... QByteArray blob = file.readAll(); QByteArray bytes = blob.mid( k, L); 如何有效地读取从k到k+l的字节? if (!file.open(QIODevice::ReadOnly)) //... QByteArray bytes = bytesFromFile( file, k, L); 解决方案 使用Seek方法来到达您要开始阅读的文件中的位置. 然后使用读取方法从此开始读取任意数量的字节. 即. if (!file.open(QIODevice::ReadOnly)){ file.seek(k); QByteArray bytes = file.read(
16 2023-02-28
编程技术问答社区
如何在Qt中移动一个文件到另一个现有的目录中
我是QT的初学者,我项目的一部分是将现有文件移至另一个现有目录?有人可以给我一个具体的例子吗?我不确定是否应该使用qfile :: rename().我尝试像这样写 QDir::rename("/home/joshua/test.txt","/home/joshua/test/test_c.txt"); 但是,错误是无法调用成员函数'bool qdir :: rename(const qString&,const qString&)'没有对象 QDIR :: Rename("/home/joshua/test.txt","/home/joshua/joshua/test/test_c.txt"); ^ 对不起,我错了,我问了一个不清楚的问题,我很抱歉浪费你的时间,我是一个初学者,在我问这个问题之前,我真的没有注意到这个问题以前被问到,因为我的水平很低.因为我太幼稚了,我再也不能问问题了,所以请原谅我问这个问题,我太压力了,因为我在一家公司实习,我对我的项目很难浪费您的时
128 2023-02-25
编程技术问答社区
将QFile转换为FILE*。
有其他方法可以交流qfile提交吗?与此不同: QFile myFile("goforward.raw"); int FileDescriptor = myFile.handle(); FILE* fh = fdopen(FileDescriptor, "rb"); 解决方案 我想您已经知道您有各种open,read等.qfile中的方法.也就是说,如果未打开文件,则handle方法将返回错误. QFile myFile("goforward.raw"); myFile.open(QIODevice::ReadOnly); int fileHandle = myFile.handle(); 之后,您可以重新打开它: FILE* fh = fdopen(fileHandle, "rb"); 其他解决方案 我们的应用程序遇到了非常奇怪的问题,最后将其追溯到qfile/fdopen问题: void foo(QString filename) {
42 2023-02-25
编程技术问答社区
QFile.write( myStruct )-如何?
我从QT开始,并且遇到问题据说现在已经很长时间了.我确定这只是我在C ++中看不到的东西.无论如何,请查看以下简单代码,并指出我在做什么错: typedef struct FILEHEADER { char udfSignature[8]; char fileName[64]; long fileVersion; UNIXTIME fileCreation; UNIXTIME lastRebuild; FILEPOINTER descriptor; } fileheader; QFile f("nanga.dat"); if(f.open(QIODevice::ReadWrite)); f.write(fileheader); QT 5.2.0向我拖了以下错误消息: C:\sw\udb\udb\main.h:113: error: no matching function for call to 'QFile::
24 2023-02-24
编程技术问答社区
在Qt中解析csv文件
是任何熟悉如何通过CSV文件解析并将其放入字符串列表中的人.现在,我将整个CSV文件放入字符串列表中.我试图弄清楚是否有一种方法只能获得第一列. #include "searchwindow.h" #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget *widget = new QWidget(); QHBoxLayout *
42 2023-02-24
编程技术问答社区
如何在Qt 5中写入和读出QResource文件?
这很奇怪,我通过添加现有文件添加所需的文件... ,该文件在那里.我运行qmake(" build-> run qmake")以使文件可用. 第一个问题: 我无法从输出终端中写入任何内容! ,但是当我手动写入文件时,输出终端每次运行时都会显示更改它.第二期:它仍然说 Qiodevice :: read:设备不打开 ! 这是我的代码: #include #include #include #include #include #include void wFile(QString Filename) { QFile nFile(Filename); QTextStream str(&nFile); qDebug()
18 2023-02-23
编程技术问答社区
打开Q文件进行追加
我如何打开一个qfile以进行附加,即等效于 FILE *f = fopen("myfile.txt", "a"); 解决方案 以QIODevice::Append模式打开文件: QFile f(...); if (f.open(QIODevice::WriteOnly | QIODevice::Append)) { ... } 另请参见 documentation .
26 2023-02-23
编程技术问答社区
非阻塞式工人中断文件复制
我正在处理非常大的文件,大小超过数百GB.用户需要能够在磁盘之间移动这些文件,并且在没有默认文件管理器的限制系统上.用户有可能意识到自己犯了一个错误并取消了操作,据我所知,用户必须等待当前的副本或重命名操作才能完成.这可能会使他们在等待几分钟的时间时感到沮丧,只是看到他们的许多GB文件仍在复制.对于复制的情况,我可以删除第二个文件,但是如果我用来移动文件的重命名,我必须反复重复该操作以撤消它,这根本是不可接受的. 我在Qfile文档中没有看到过副本()和Rename()的方法,还是我需要组合自己的课程来处理和重命名? 解决方案 我认为文件大小不会对重命名的时间有任何影响. 对于副本 - QT提供什么都没有内置的,您必须自己实施.这里的关键是,您必须找到一些连续取消复制的方法的方法.这意味着您不能锁定主线程以便能够处理事件. 是否要额外的线程以保持主线程响应迅速或决定使用主线程 - 在这两种情况下,您都需要实现"碎片"复制 - 一次使用缓冲区一次,直到一个块复制文件或
14 2023-02-23
编程技术问答社区
如何从QFile或QSaveFile中获得一个windows HANDLE,用于ReOpenFile?
给定QFileDevice实例(A QFile或QSaveFile) - 如何获得文件的本机Windows HANDLE?并且可以与ReOpenFile? 一起使用此处理 解决方案 _get_osfhandle _get_osfhandle 回到HANDLE. struct FdHandle { int fd = -1; HANDLE handle = INVALID_HANDLE_VALUE; operator HANDLE() const { return handle; } bool isFdValid() const { return fd != -1; } bool isHandleValid() const { return handle != INVALID_HANDLE_VALUE; } }; FdHandle windowsHandleOf(QFileDevice* dev) { auto fd = dev->handle();
10 2022-10-28
编程技术问答社区
如何在Qt中创建一个具有完整路径的新文件?
我是QT初学者,只是遇到了问题.我正在寻找一个文件SomePath/NewDirectoryA/NewFile.kml(NewFile.kml将是NewDirectoryA中的唯一文件,拥有此目录只是为了维护项目中的语义). 如果存在SomePath/NewDirectoryA/NewFile.kml,那么我将在我的代码中使用它,如果它不存在,则必须创建它.如果此文件不存在,则此目录在SomePath中也不存在.因此,如果我只需要创建一个文件,我就可以使用qfile并以readwrite或写入模式打开它. 但是问题是我必须使用目录本身创建文件. 我尝试使用QFile使用文件名SomePath/NewDirectoryA/NewFile.kml但没有起作用. 请建议我在给定位置(某些路径)的新目录(newDirectora)中创建一个新文件(newfile.kml)的方法. 解决方案 bool qfile "> qfile :: Open (openmode
10 2022-09-21
编程技术问答社区
Qt-如何计算.txt文件的行数
我想计算文本文件中的行数,所以我可以将其转换为二维数组 文本文件应该是这样的 20 30 78 1000 .... .... 以及使用QFile访问文件的源代码 QFile file("c:/Qt/in.txt"); file.open(QIODevice::ReadOnly); //| QIODevice::Text) y = linecount/5; QString line[y][5]; QTextStream in(&file); for (int k=0;k
3650 2022-08-11
编程技术问答社区
Qt5,象征性链接到一个文件夹
这个问题的一个愚蠢的问题,(可能)有一个过时的答案,因为我无法让它在 Qt5 中工作. 我希望创建一个指向文件夹的符号链接以获得类似于 QFile::link() 的结果.鉴于 QDir 没有等效的功能,如果我愿意的话, QProcess (或外部库)似乎是出路.这在 Qt5 中如何管理? 非常感谢. 解决方案 我发现在Qt中无法做到,所以我最终改用了Win32 API.特别是 CreateSymbolicLink() 函数.
416 2022-08-11
编程技术问答社区
QFile::QFile函数 -> 错误。QFile :: QFile (const QFile &) '是私有的
在我的一种方法中,我需要一个 QFile 对象: void GUIsubclassKuehniGUI::LoadDirectory() { QString loadedDirectory = QFileDialog::getExistingDirectory(this, "/home",tr("Create Directory"), QFileDialog::DontResolveSymlinks); ui.PathDirectory -> setText(loadedDirectory); QFileInfo GeoDat1 = loadedDirectory + "/1_geo.m4";
654 2022-08-11
编程技术问答社区
QT-Q文件复制操作极其缓慢
我正在开发一个需要使用 QT (5.6.1) 将大量文件从一个文件夹复制到另一个文件夹的应用程序 为此,我一直在使用 QFile::copy() 方法.这很好用,除了一件事:它非常慢.使用 Windows 资源管理器执行相同复制操作所需时间的两倍以上. 想知道这是为什么,我深入研究了 QT 源代码,并在 qfile.cpp 中找到了这个,看起来很相关: char block[4096]; qint64 totalRead = 0; while(!atEnd()) { qint64 in = read(block, sizeof(block)); if (in setError(QFile::CopyError, tr("Failure to writ
1178 2022-08-11
编程技术问答社区
如何序列化一个QMap?
我正在尝试学习如何使用以下代码在窗口应用程序中序列化 QMap 对象: #include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include void write () { QString filename = "Z:/snippets.txt"; QFile myFile (filename); if (!myFile.open(QIODevice::WriteOnly)) { qDebug() map; map.insert("one","this is 1"
682 2022-08-11
编程技术问答社区
os.walk在PyQt中的类似功能
在我可以继续执行递归目录/文件搜索之前,我想知道 Qt/PyQt 是否具有 os.walk 的类似物. 主应用程序是 PyQt4 中的 GUI 应用程序,QStrings 和路径对象(文件、目录)中的所有文本字段都使用 QFile、QDir、QFileinfo 进行操作. 作为类比,我的意思是快速方便的递归 fs-tree 遍历工具. 我应该使用 os.walk 还是更快、信息量更大的东西? PS.也许 this 可以帮助我,但我不确定这是否比 os.walk 更有效. 解决方案 我应该使用 os.walk 还是更快、信息量更大的东西? 没有,如果可以的话,我建议在 python 中使用 os.walk.它和它一样好. 这不仅是因为Qt没有这种方便的方法,而且即使你基于QDir编写自己的机制,你也可以访问所有三个变量,而无需像os.walk那样手工制作. 如果你急于使用Qt,那么你可以在下面我之前用过的下面的遍历函数. main
130 2022-08-11
编程技术问答社区
Qt不能不能创建/写入C:\\C
我正在编写一个需要写入已安装目录 (C:\Program Files...) 的 Qt 程序(Windows 7 最初为 4.7).当我尝试写入将被“保护"的位置(程序文件、C:\ 等)时,没有创建任何文件.但是,QFile 没有给我任何错误代码(error() 返回 0,这意味着它工作正常). 这是我正在使用的代码片段,但它不起作用.我将在程序的后面关闭文件. QApplication a(argc, argv); // Setting plugin paths. QStringList paths = QCoreApplication::libraryPaths(); paths.append(QCoreApplication::applicationDirPath()); QCoreApplication::setLibraryPaths(paths); // Debug file. QString path = QCoreApplication::applic
76 2022-08-11
编程技术问答社区
在不同的线程中从一个Q文件中读取数据
从读取的最佳方式是什么?QFile 位于与我要读取的线程不同的线程中? 考虑: class AFile:public QObject { Q_OBJECT public: AFile(const QString& name,QObject * parent = Q_NULLPTR):QObject(parent),m_File(name){m_File.open(QIODevice :: ReadWrite); } public slots: void write(const QByteArray& data,qint64 pos){m_File.seek(pos); m_File.write(data); } private: mutable QFile m_File; }; class AData:public QObject { Q_OBJECT public: using QObject :: QObject;
192 2022-07-19
编程技术问答社区