问题标签 [qt5.7]

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 回答
164 浏览

android - qt creator 输出在 x86 Android 模拟器中给出 QOpenGLShaderProgram 错误

我有一个编写 QT/QML 的 Android 程序,当我将应用程序部署到 Arm Android Emulator 时,它可以工作。但是如果我将应用程序部署到 x86 Andorid Emulator,程序可以工作,但是屏幕是白色的。没有要显示的组件。应用程序输出是:

.... QOpenGLShaderProgram::uniformLocation(matrix): 着色器程序未链接 W/libArizaMobil.so(2651): (null):0 ((null)): QOpenGLShaderProgram::uniformLocation(color): 着色器程序未链接W/libArizaMobil.so(2651):(null):0((null)):QOpenGLShaderProgram::uniformLocation(textureScale):着色器程序未链接W/libArizaMobil.so(2651):(null):0((null )): QOpenGLShaderProgram::uniformLocation( dpr ): 着色器程序未链接......

0 投票
1 回答
96 浏览

qtcpserver - 我可以使用 QUdpSocket 连接 QTcpServer 吗?

我是网络世界的超级新手,所以我有一个 QTcpserver 目前正在使用 newConnection 信号,但我想知道我是否可以将 QUdpSocket 与 QTcpServer 一起使用?这有可能吗?

0 投票
0 回答
858 浏览

qt - QOpenGLWidget 在 update() 上停止重绘

我有一个自定义 QDialog,其中包含一个层次结构,其中包含 4 个单独的QOpenGLWidget.

这些中QOpenGLWidget的每一个都有自己的 GL 上下文,并呈现不同的场景。

我有一个循环,它定期调用update()(重新绘制它们的推荐方法)QOpenGLWidget(更经常地关注一个,但我认为这与问题无关)。

我的问题是,最终在随机时间后(有时它发生得很快,有时它不会发生 10 多分钟),一个或多个's 将在被调用QOpenGLWidget时停止重新绘制。update()

然而,我注意到调整停滞的大小QOpenGLWidget会导致触发单个重绘事件。

我可以看到update()在所有 's 上调用的调试器QOpenGLWidget,但这永远不会触发paintGL()停滞的小部件(重绘方法)。并且updatesEnabled()始终返回 true,无论是否update()触发重绘。QT 也不会向控制台打印任何错误或警告。

包含这些小部件的对话框在与触发的线程不同的线程中运行update(),因此我无法repaint()直接调用(无需编写自己的事件循环)。

添加QApplication::sync()到触发的方法update()也没有什么不同。

我倾向于认为当可用内存较少时它会发生更多,但是更少的内存大约为 800mb,并且应用程序使用的内存要少得多。所以我的直觉可能是错误的。

我不是 QT 的大用户,所以我不太确定从哪里进一步调试问题,欢迎提出任何建议。鉴于错误的重现性涉及等待未知的时间长度和更复杂和多线程的项目,无法想象尝试用一小段代码重现错误会对我有多大好处。


更新:

update()在调用a时遇到了完全相同的问题QGraphicsScene,但是每次仅在几次更新后才发生。

发现这个建议改为更新视口,viewport()->update()它似乎已经解决了这个问题。

QOpenGLWidget但是没有以相同方式更新的视口。

0 投票
2 回答
2580 浏览

qt - QObject::connect: 不能对类型为“QModbusDevice::State”的参数进行排队

我正在开发一个多线程应用程序,我需要通过 modbus 实例化 n 个设备。所以我创建了一个控制器(ServiceSM)来实例化 N 个线程(ServiceSlots)。

设备多种多样,因此我必须为每种类型的设备创建“驱动程序”,其中一个驱动程序使用 QModbusClient 类,因此我创建了一个控制器来管理设备类型。

图式

为了测试状态机的操作和与设备的连接,我制作了一个示例代码以在图形界面中运行。

我删除了一些无关紧要的代码片段,以便更容易理解


在 MD4040driver 类中,当我的代码运行此部分时,会出现以下消息。如果我在图形界面中实例化 DeviceDriver 类,它可以完美运行,当我在线程中实例化它时会出现问题。

打电话时

MD4040drive::sm_conn() - 尝试连接 - 这是我的消息错误:

QObject::connect: 无法对“QModbusDevice::State”类型的参数进行排队(确保使用 qRegisterMetaType() 注册了“QModbusDevice::State”。)

QObject:无法为不同线程中的父级创建子级。(Parent是QTcpSocket(0x24a6ce8),parent的线程是ServiceSlots(0xea66488),当前线程是QThread(0x2418a78)

QObject:无法为不同线程中的父级创建子级。(Parent是QTcpSocket(0x24a6ce8),parent的线程是ServiceSlots(0xea66488),当前线程是QThread(0x2418a78)

休息我的代码(部分)


devicedriverviewgui.h devicedriverviewgui.cpp


服务槽.h 服务槽.cpp


设备驱动程序.h 设备驱动程序.cpp


md4040drive.h md4040drive.cpp

0 投票
0 回答
176 浏览

c++ - 视频不流畅 OpenCV 2.4 和 Qt 5.7

我正在努力编写一个使用 OpenCV 从视频中读取帧并将其显示在 QWidget 中的视频播放器。

这是我的代码:

在 QWidget 方面,我只是使用这张图片并将其绘制在paintEvent.

在我看来,参数sleep在这里并不重要。尽管我减少了它(以获得更多的 FPS),但视频并不流畅。

留给我的唯一一件事是我放弃了这种方法,因为它不起作用,但我想在这里再问一次,只是为了确定——我在这里做错了吗?

0 投票
1 回答
858 浏览

mingw - 使用 MinGW 的 Qt 网页内容

在最新的 Qt 版本中,不再支持 QtWebKit 并被基于 Chromium 的 QtWebEngine 取代。并且无法使用 MinGW 构建 Chromium,从而导致 QtWebEngine 不可用。

那么,在使用 MinGW 进行编译时,有什么方法可以将 Web 内容与 Qt 一起使用?

0 投票
0 回答
133 浏览

c++ - Powershell New-NetIPAddress后,icmpSendEcho2返回0,GetLastError返回0

使用QT5.7.0,执行Powershell命令New-NetIPAddress,waitForFinished(),然后使用icmpSendEcho2返回0,调用GetLastError 0时得到的返回值为0,是什么原因造成的?

我正在使用 64 位 Windows 10 操作系统,我在其中执行 .exe,并且可以访问我尝试 ping 的地址。当我更改接口的 IP 地址时,我会“随机”收到上述错误,并且不时会从下一个路由器得到答案——当我点击正确的接口时,无法到达目的地或 ping 成功。

从文档MSDN IcmpSendEcho2我读到返回 0 后,我应该检查 GetLastError。从文档错误代码 0 - 499返回值 0 表示没有错误。

在一些线程中提到了另一个 Windows 进程可以同时执行。这可能是 GetLastError 返回 0 的情况吗?

当我更改 IP 并随后 ping 时会出现此问题。当 IP 已经设置时,我在不更改 IP 地址的情况下 ping 并且行为就像我认为应该的那样。

代码按此顺序执行,简化:

其中 changeIP 函数包含以下内容:

并且 ping() 函数包含以下内容:

0 投票
1 回答
386 浏览

c++ - 为什么最后创建的 Qt3DCore::QEntity 总是在我的场景视图的前台?

在我的Qt3D场景中,我的 3D 对象没有根据它们的空间定位显示。不管我如何旋转相机,最后创建QEntity的总是在前景中。在我的示例中,QEntity redBigSphere即使它在空间上位于smallGreenSphere相机设置中指定的默认视图的后面,它也始终位于前景中。

main.cpp

(结果图片:http: //imgur.com/a/A7tIW

如果我交换实例化的顺序,smallGreenSphere总是在前台。

(结果图片:http: //imgur.com/a/fygTU

无论实例化顺序如何,如何获得正确的 3D 视图?

我是 Qt 和 Qt3D 的新手,所以请在你的回答中考虑这一点。(由于我的声誉低,我只能提供图片的链接。)

0 投票
0 回答
727 浏览

macos - Qt Mac OS X:使用 QMAKE_BUNDLE_DATA 和/与自定义目标

我正在处理我的 Qt 桌面应用程序的构建问题。我正在使用QT 5.7

据我所知,对于 qt mac 应用程序,我需要使用QMAKE_BUNDLE_DATA 将所有资源捆绑到 .app中,所以我使用了它。我还为运行外部命令(rcc)的 make 文件定义了自定义目标,该命令生成一些需要复制到 .app 包中的 .rcc 文件。

问题是我在编译时收到一个错误,表明.app 包找不到 .rcc文件,这意味着没有生成 .rcc 文件!但是,我在没有 QMAKE_BUNDLE_DATA 的情况下测试了我的自定义目标(creatercc),它生成了 .rcc 文件,因此我得出结论,希望在创建 .rcc 之前创建 .app 包,这就是包找不到 .rcc 文件的原因。

问题是:如何确保预定义的目标在 QMAKE_BUNDLE_DATA 之前首先运行,并且 QMAKE_BUNDLE_DATA 等到预定义的目标命令结束它的执行?谢谢

0 投票
0 回答
147 浏览

c++ - 任务栏中的 Qt 应用程序但未启动

有问题的应用程序是使用 Qt 5.7 和 VS2015 编写的。上周出现了一个奇怪的问题,我正拼命想解决这个问题。我认为我们有足够的日志记录,但看起来不像。再一次,这个问题只出现在几个用户的机器上。

我们已确保部署在所有 Windows 机器上运行良好,并且该应用程序直到上周在这些机器上运行良好。现在它拒绝打开,但显示在任务栏中。

用户的机器安装了先决条件,即 VC++ 2015。还存在所有必要的 Qt DLL。该应用程序在其他所有机器上都可以正常工作。所以我认为问题出在机器上,但是,重新启动 2 个操作系统(Windows 7 和 Windows 2012),重新安装应用程序,不同版本都失败并显示相同的问题。

我现在的问题是

  1. 有没有办法在应用程序启动时记录所有依赖项(多次使用依赖walker,但想做类似于我们的日志的事情)。
  2. 如何诊断此问题以查明是否是看门狗应用程序或防病毒软件导致此问题?试图说服用户关闭防病毒软件以诊断问题。

我使用windeployqt来获取所有依赖项,并在测试时找出了所需的 DLL 的其余部分,例如 VC++ 2015。还在构建使用过的依赖 walker时。很少有人问像qt 应用程序无法启动qt 应用程序启动问题都指向缺少 DLL。我知道情况并非如此,因为该应用程序在几乎所有 Windows 机器上都可以正常工作。所以我需要帮助和指导来记录依赖关系以及如何诊断这种情况。

如果租约让我知道,我可能会错过一些信息。我正在研究更多,当我得到一些额外的信息时,我会更新这篇文章。

还尝试在 main() 函数中添加大量日志记录。看看我能不能抓到什么。