问题标签 [qiodevice]

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 投票
1 回答
104 浏览

qt - 如何从 UART 获取二维数组到 QListQt 并在 QML 上设置文本

我从 UART 接收到从 Arduino 发送的 2D 数组。我可以在调试中显示它,但我不能将它保存在 QList 变体中以在 QML 中为矩形矩阵设置文本。

我想在 QML 每个矩形上显示文本。

我该怎么办?

这是 Arduino 代码。我发送二维数组 17x17

这是 readSerial 函数:

QML 文件:

序列号.h:

主文件

0 投票
1 回答
68 浏览

c++ - QIODevice::size() 和 QIODevice::bytesAvailable() 总是返回 0

我正在编写一个模拟器,需要我不断地将生成的原始音频样本推送到QAudioOutput. 这是通过将字节写入底层来实现的,QIODevice如下所示:

我想跟踪排队的样本数量,因为声音会驱动仿真速度,从而驱动生成的原始音频样本。尝试调用QIODevice::read()总是返回 0。我该怎么做?

0 投票
0 回答
34 浏览

c++ - 为什么Qt实现返回qint64而不是quint64的QFile::size()

所以通过QFile文档,我发现QFile::size()返回一个qint64

如果QFile::size()返回一个无符号整数,即quint64,因为文件大小范围为 0 字节及以上,这将是有意义的(至少对我而言) 。QFile::size()重新实现父类的一些方法,即QFileDevice::size()并再次从QIODevice::size() 实现。在这些实现中,没有提到任何负数,即-1等。

QIODevice::size()中的基本实现有一个描述

对于开放式随机访问设备,此函数返回设备的大小。对于打开的顺序设备,返回bytesAvailable()

如果设备关闭,返回的尺寸将不会反映设备的实际尺寸。

在指示返回类型的QIODevice::bytesAvailable()QIODevice::size()中也没有提及 -1 返回值,但是它的返回类型也是qint64.

这是 Qt 的设计决策吗,如果文件大小使用负数,并且也可以扩展它们的父类,即

0 投票
1 回答
324 浏览

c++ - 将 QSettings 与存储在 QByteArray 或 QIODevice 中的数据一起使用?

我有 ini 格式的数据,这些数据最初是使用QSettings(因此它包含一些QSettings特定的语法)编写的,存储在QByteArray. 我希望能够使用QSettings. 不幸的是,开箱即QSettings用似乎只能专门处理文件,不能用于QByteArray派生QIODeviceQBuffer.

到目前为止,我已经找到了两种处理方法:

  1. 将数据临时转储到文件中,可能使用QTemporaryFile,并使用读取QSettings
  2. 创建一个可以从字节数组中读取数据的自定义实现,QAbstractFileEngine就像它是一个文件一样,正如这个十年老线程中所建议的那样。然而QAbstractFileEngine,在 Qt 5 中不再公开,因此这不是一个可行的选择。

如果可能的话,我想避免将这些数据写入磁盘。自从那个旧帖子发布以来已经过去了十年。现在有更好的方法吗?

编辑:目前我决定使用QAbstractFileEngine它,即使它在 Qt 5 中是私有的。至少它仍然在 Qt 5.15 左右。如果它被删除,我将更新我的代码以使用不同的方法。不过,我将保持这个问题的开放性,以防有人可以用另一种不使用的可行方法来回答QTemporaryFile

编辑 2:QAbstractFileEngine 仅适用于读取设置。不幸的是,使用 QSettings 编写设置总是假定文件是本机文件。

0 投票
0 回答
12 浏览

qnetworkaccessmanager - 使用 QNetworkAccessManager 对象下载 Json 内容时的空缓冲区

我正在使用 URL 和 QNetworkAccessManager 类下载 json 文件。对于小于 50 MB 的较小文件,我能够成功下载这些文件。但是当大小进一步增加时,我得到一个成功代码作为成功(200),当我尝试从 json 内容访问 Bytearray 时,返回的 bytearray 是空的。

代码如下。

QString url = "我的获取内容的 URL";
QNetworkRequest requestGetLabels(QUrl::fromEncoded(url.toLocal8Bit()));

requestGetLabels.setRawHeader("授权", m_linkCredentialsBytes);

// 设置头部类型 requestGetLabels.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

QNetworkAccessManager *restApiClient = new QNetworkAccessManager();

QNetworkReply *replyGetLabels = restApiClient->get(requestGetLabels);

0 投票
0 回答
34 浏览

initialization - 如何使用 stdoutin 头文件初始化 QTextStream?

我想声明:

在我的头文件中。我收到错误消息:“C++ 需要所有声明的类型说明符”。

我不能在类构造函数中做到这一点

它会给我一个错误:“无法使用'FILE *'(又名'_iobuf *')类型的右值初始化'QIODevice *'类型的参数”

请给个提示。

0 投票
2 回答
51 浏览

c++ - 如何使用 QIODevice:read() 计算要从文件中读取的字节的最佳大小?

问题是,我必须读取文件并将其数据写入另一个文件。但是大小可能太大(大于8 gb)所以我按块(1 mb)读取文件,但我认为可以计算出块的最佳大小,那么我该怎么做呢?我应该使用什么工具?这是代码

}