问题标签 [qt5.10]
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.
c++ - QTcpSocket data transfer stops when read buffer is full and does not resumes when it frees up
I have server-client Qt application, where client sends data packets to server and server reads them at a set time intervals. It happens that client sends data faster than server can read thus filling all the memory on the server side. I am using QAbstractSocket::setReadBufferSize(size) to set max read buffer size on the server side and when it fills up, socket data transferring stops, and data is buffered on client side, which is what i want, but the problem is when server's QTcpSocket's internal read buffer frees up (is not full anymore), data transfer between client and server does not resume.
I've tried to use QAbstractSocket::resume() which seems to work, but Qt5.10 documentation says:
Continues data transfer on the socket. This method should only be used after the socket has been set to pause upon notifications and a notification has been received. The only notification currently supported is QSslSocket::sslErrors(). Calling this method if the socket is not paused results in undefined behavior.
I feel like I should not use that function in this situation, but is there any other solution? How do i know if socket is paused? Why data transfer does not continue automaticaly when QTcpSocket's internal read buffer is not full anymore?
EDIT 1 :
I have downloaded Qt(5.10.0) sources and pdb's to debug this situation and I can see that QAbstractSocket::readData() internal function have line "d->socketEngine->setReadNotificationEnabled(true)" which re-enables data transfering, but QAbstractSocket::readData() gets called only when QTcpSocket internal read buffer is empty (qiodevice.cpp; QIODevicePrivate::read(); line 1176) and in My situation it is never empty, because I read it only when it has enough data for complete packet.
Shouldn't QAbstractSocket::readData() be called when read buffer is not full anymore and not when it's completely empty? Or maybe i do something wrong?
qt - Qt流控制传输协议(sctp)
我正在尝试运行依赖于 QSctpServer 和 QSctpSocket 的 qt 示例 multistreamserver 和 multistreamclient。
我收到错误“QSctpSosket 没有命名类型”和“无效使用不完整类型'class QSctpServer'”
到底是怎么回事?
运行 Ubuntu 16.04、Qt 5.10.1
c++ - 将 Pixeldata 渲染到 OpenGL 纹理四边形
经过几天的尝试,我无法正确地将 Pixeldata 渲染为带纹理的四边形。
我想要的相当简单(我认为):我目前正在为我的公司编写一个 VNC 实现,以将其绑定到现有应用程序中。我已经成功实现了 RfbProtocol(至少在我需要的情况下)并且我能够获得正确的 Pixeldata。因为 VNC 服务器只发送增量更改,所以我收到带有更改区域和像素信息的小矩形。
我已经计算出 Pixeldata 的相应 OpenGL 格式是GL_BGRA和GL_UNSIGNED_INT_8_8_8_8_REV。
因为我无法使用 Textured Quads(这似乎是为此目的的最佳实现),所以我使用了不同的方法:
这一切都在 QOpenGLWidget 中完成。
显然这不是最好的方法,但它正在用于测试。问题是我需要将 Pixeldata 缩放到 Widget 的大小,这可以与 OpenGLTexture 很好地配合使用,但正如我在开头提到的那样,我根本无法正确地做到这一点。
c++ - 在构建机器人上构建后,Qt 应用程序变成了 Windows 旧样式
我开始从 Qt 5.6 迁移到 5.10.1 并遇到了这个问题。在 5.6 版本中,样式为“windowsvista”,一切正常。现在看起来 Qt 无法检测到这个并使用“windows”样式。
此外,在我的 PC 上,5.10.1 的构建看起来不错。它适用于 Windows 10 x64,与 buildbot 相同。
配置线:
我在没有 Ruby 和 Perl 库的情况下构建 Qt,因为我的项目不需要它。
可能是配置的问题,因为在 5.6 中有 configureapp.exe 在 /qtbase 现在我看不到它。但我不明白原因。
c++ - 从 Qt 中的 Web 服务解析未命名的 JSON 数组
我正在尝试从 Web 服务解析这个 JSON。
当我将 API 调用的响应作为 QString 注销时,如下所示,结果很好,但所有引号都已转义,因此不会使其成为有效的 JSON:
到目前为止我看到的示例(例如Parse jsonarray?)仅解析它们从名称中获取的命名数组QJsonObject
。关于如何QJsonArray
直接使用或与QJsonDocument::fromJson()
返回数据一起使用的任何提示?
qt - 在 Qt 中从 QJsonArray 构造 QString
在尝试QString
从 a 的值构造 a 时QJsonArray
,我收到以下错误:
error: passing 'const QString' as 'this' argument discards qualifiers [-fpermissive]
.
不知道我在这段代码中哪里弄错了:
qt - Qml - qml 中的 C++ 信号参数“未定义”
我收到来自工作线程的信号并通过 C++ Singleton (CTaskManager) 将其重新发送到 qml。
这适用于 LINUX 下的 Qt Creator 4.6.1。当我在 Windows 下运行相同的项目时,我的 qml 信号连接中只得到未定义的参数。
有任何想法吗 ?
c++ - 代码编辑器实现缺少 Qt 的 QFontMetrics::horizontalAdvance()
我正在为一种简单的脚本语言实现代码编辑器,并且一直在使用 Qt 代码编辑器示例(http://doc.qt.io/qt-5/qtwidgets-widgets-codeeditor-example.html)作为使用行号实现 QPlainTextEdit。该示例使用基本小部件的 fontMetrics() 方法“horizontalAdvance”来查询单个字符的宽度(或更好的前进)。
该方法QFontMetrics::horizontalAdvance(QChar)
(参见http://doc.qt.io/qt-5/qfontmetrics.html#horizontalAdvance -1 )可以在 Qt 文档中找到,但我的实现似乎缺少这种方法。
我在带有 Visual Studio Enterprise 2017 版本 15.7.3 的 Windows 10 上使用 Qt 5.10.1 'msvc2017_64'。我已经在标题中搜索了缺少的方法,但只找到QTextLine::horizontalAdvance()
了我不需要的方法。
我已将QFontMetrics::horizontalAdvance(QChar)
调用替换为QFontMetrics::width(QChar)
使用当前字体(Consolas)的调用,但我不确定它是否适用于每种可能的字体。
问题 1) QFontMetrics::horizontalAdvance() 是否已从当前版本的 Qt 中删除,我的安装是否存在错误或遗漏了什么?
问题 2)获得特定(非比例)字体预付款的正确方法是什么?
感谢您阅读本文并提供帮助!
qt - QWidget 多种样式无法正常工作
当我尝试在一个小部件上设置多个样式时,只应用第一个样式。
我想删除当我将鼠标悬停在 QToolButton 上时出现的边框以及菜单中的向下箭头。
基本上,该按钮包含一个设置动画速度的菜单,例如视频播放器。
这是我的代码:
这是边框和向下箭头:
我的 QToolButton
无论我将该代码片段放在我的代码中,还是直接在 Qt 设计器上设置样式,在这两种情况下它仍然只应用第一个样式。
如何将两种样式应用于同一个对象?
chromium - 我可以使用 ffmpeg 构建 chromium 以支持所有视频格式吗?
在Qt5.2版本下,我使用了QtWebView,它可以自动调用第三方扩展来支持avi、mpeg、mov、flv等视频格式。但是当我升级到Qt5.10,将QtWebView改成QtWebengineView后,效果不同了,无法调用第三方扩展。如果我想用 ffmpeg 修改 chromium 源以支持 QtWebengine 的所有视频格式,我该怎么办?