问题标签 [qt5.8]

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

c++ - 为什么我的 Qt 信号没有被事件队列处理?

快速描述情况

我试图让一个最小的 GUI 启动一个无休止的进程,该进程通过 CAN 总线通过自定义协议进行通信。

根据我在这里阅读的内容,我的代码结构如下:

一方面,我有一个类使用 2 个简单的按钮“开始”和“停止”来处理我的 GUI,即 MainWindow。

另一方面,一个使用上面链接中描述的状态机管理我的自定义协议的类,即 Worker。

在这些中间,我有一个将整体连接在一起的控制器。这个控制器在这里是因为处理了一些其他任务,但这不是本文的目的。

关于信号和插槽

我已将按钮信号 (released()) 连接到来自控制器的信号。所以 GUI 不知道到底是什么开始了。

这些控制器的信号连接到来自 Worker 的插槽。这些插槽用于启动和停止该过程。

关于线程

Worker 实例存在于它自己的 QThread 中。可能涉及其他任务,所以我认为最好在自己的线程中处理每个任务。

一开始,worker 的进程是通过信号/槽来处理的,这些信号/槽使状态机在关于转换的状态之间进化。由于信号/槽机制,如果我是正确的,线程的事件循环可以处理其队列中的事件。

问题

我的启动信号已正确发送给工作人员,启动进程并因此启动状态机。这台机器是循环的,直到用户请求停止信号。但是,当用户单击“停止”按钮时,关联的插槽不会被调用。同时,机器继续无休止地运行并且看不到停止请求(我已经放了一些调试消息来查看真正执行了什么)。

代码片段

这是代码片段。主窗口.h

主窗口.cpp

控制器.h

Controller.cpp(继承公共 QObject)

Worker 处理带有枚举State的状态机。Transition工人.h

Worker.cpp(继承公共 QObject)

。轮廓

免责声明代码没有正确退出。最好在您的 IDE 中启动它,这样您就可以轻松杀死它。

这些代码片段是使用 Qt5.8.0 MinGW 32 位构建的。要重现问题,只需点击“开始”,调试消息就会出现在控制台中。然后点击“停止”,消息不断出现,不要停止。

我通过直接调用而不是使用信号找到了一种解决stopProcess()方法Controller。这样做会正确设置stopRequested并停止该过程。

不过,我想知道为什么事件队列从不处理来自Controller? 即使使用信号/槽处理状态机,也允许事件队列在事件到达时对其进行处理。

(我尝试在向 发送信号的中间槽中放置一个中间槽,ControllerWorker查看 GUI 是否正确发送了信号并且该槽确实已执行。但该stopProcess()槽仍未被调用。)

有什么想法吗 ?

0 投票
1 回答
730 浏览

c++ - 使用 Qt qSort() 在数组上调用 qSort

我有一个动态数组。

int* array = new int[size]

我正在使用 Qt 库在 C++11 中开发应用程序。

我可以这样使用qSort它吗QtAlgorithms.h

qSort(array, array+size-1)

我不确定,因为这些论点需要一种RandomAccessIterator

这是否意味着任何指针?

0 投票
1 回答
842 浏览

qt - ChildrenRect 总是返回 0

我有一个 Flickable 项目,我想在其中放置一个自定义的流组件,所以我创建了这样的 Flickable:

然后在我的 main.qml 中有这个(上面的文件是 MyFlickable,而 MyFlow 是具有特定属性的流):

这很好用,但问题是我希望能够以尽可能少的开销重用这个项目。在我的 MyFlow 中设置 id 不起作用,我尝试了这个

正如这里在 contentWidth 部分中所建议的那样:http: //doc.qt.io/qt-5/qml-qtquick-flickable.html#contentItem-prop

但这总是返回 0。我尝试了其他几种方法来接收 onCompleted 信号,但我得到了同样的运气。这不起作用,例如:

在我看来,这应该与通过 id 访问项目相同,但显然不是。

所以我的问题是:在添加了所有组件之后,我如何达到我的流程高度?

提前致谢!

0 投票
0 回答
98 浏览

c++ - VBO 与 OpenGL 4.1 和 3.0 的兼容性

我有一个显示一些 3D 渲染的应用程序。在将我的应用程序集成到不同用户的笔记本电脑上时,我遇到了 VBO 的一些图形问题。顶点缓冲区对象在开发站中工作得非常好

第一台笔记本电脑嵌入了 AMD Radeon HD 6470M -> OpenGL 4.1

在这台笔记本电脑上,我有一些:老式方式 opengl 代码,工作正常。vbo 实现:不显示 VBO 的数据

这里是负责绘制我的 VBO 的代码:

我是否使用了任何最近的功能?我真的没有这种感觉。

非 VBO 对象完美显示:

第二台笔记本电脑嵌入了 Intel Graphic 3000 -> OpenGL 3.0

在这里,如果我只将鼠标放在 OpenGL 画布上,它就会崩溃。什么都不会显示......甚至背景清除颜色。

我注意不要使用已弃用的功能,我真的认为一切都可以与一大堆计算机/笔记本电脑兼容。有人有什么主意吗 ?

使用 Qt5.8,一切都显示在 QGLWidget 中。问题发生在 64 位平台上,在 Windows 7 Professional 上测试。

0 投票
0 回答
854 浏览

c++ - LNK1181:无法打开输入文件 'release\main.obj' - 重建 QT 应用程序时

我是 QT 应用程序的新手。我从我的供应商那里得到了一些基于 QT 的项目。示例应用程序基于 QT 5.8.0 msvc2013 32 位/64 位构建,但我没有 msvc 2013,而是在我的电脑上安装了 msvc 2017。重建(在 Qmake 之后)收到的代码时,我遇到了以下问题。

任何人都可以帮助我摆脱这个问题也期待得到您关于配置 Qtcreator 项目和构建设置的建议。

错误:LNK1181:无法打开输入文件“release\main.obj”。套件 Desktop Qt 5.8.0 MSVC2017 64bit 存在配置问题,这可能是此问题的根本原因。执行步骤“Make”时

Project.Pro 文件代码,

以下是我的项目构建设置。 在此处输入图像描述

以下是我的套件设置,

在此处输入图像描述

0 投票
0 回答
307 浏览

qt - Qt 5.8 使用 std::chrono 编译问题

我正在 Ubuntu 17.04 上开发 Qt 应用程序。我以前使用的是最新的 Qt 版本(Qt 5.12.2),但我不得不将几个版本返回到 Qt 5.8。

我能够使用 Qt 5.12 毫无问题地进行编译,但是使用 Qt 5.8 我得到以下所有与 std::chrono 相关的错误:

有关如何解决此问题的任何想法。

这是 g++ 版本还是 libstdc++ 版本问题?

这是我的 g++ 版本:

如果是这样,如果有任何关于清除/删除和 apt-get install 的建议会有所帮助。

0 投票
1 回答
348 浏览

qt5.8 - VS2015社区版Qt 5.8项目构建失败

我在 Visual Studio 2015 社区版中构建 Qt 5.8 项目时遇到此错误,我无法解决此问题。

0 投票
0 回答
24 浏览

qt5.8 - Qt in VS 2015 comm edn

您好我在 Visual Studio 2015 comm 中构建 Qt 应用程序 Test2 时遇到以下错误。编辑

请帮我解决这个问题。