草庐IT

Qt5Webkit

全部标签

c++ - 将Qt GUI拆分成多线程用于GUI、模拟、OpenGL是否可行?

我正在尝试使用Qt为工作中的仪器模拟程序设计新布局。我们当前的sim是在单个窗口中运行所有内容(我们同时使用了glut(旧)和fltk),它使用glViewport(...)和glScissor(...)将仪器读数拆分为自己的View,然后使用某种形式的“ortho2D”调用来创建自己的虚拟像素空间。模拟器当前会更新仪器,然后在它们自己的视口(viewport)中一个接一个地绘制,所有这些都在同一个线程中。我们想找到更好的方法,于是我们选择了Qt。我在几个大的限制下工作:每个仪表板仍需要位于其OpenGL视口(viewport)中。有很多按钮和很多仪器。我的暂定解决方案是为每个使用QO

c++ - Qt 中 `:/foo` 、 `qrc:/foo` 和 `qrc:///foo` 路径之间的区别

此代码成功:QQmlApplicationEngineengine;engine.load(QUrl(QStringLiteral("qrc:/main.qml")));此代码打印“失败”:QFilefile("qrc:/main.qml");if(file.open(QIODevice::ReadOnly)){cout将QFile构造函数参数更改为qrc:///main.qml(如Qtdocumentation中所示)并没有修复它。将其更改为:/main.qml使其打印“成功”。所以我对何时使用这3种形式感到困惑。 最佳答案 如您

c++ - 如何在 QML (Qt) 中离线运行 OpenStreetMap

我在Qt上使用QML来显示OpenStreetMap(使用osm插件),这需要互联网连接。有没有一种方法可以让我做同样的事情但离线运行它?例如,运行我自己的磁贴服务器(但这有多容易)?或者使用可以让我很快完成的库。顺便说一句,我在Ubuntu上运行我的程序。任何关于如何做到这一点的帮助,特别是如果有人可以提供要完成的步骤,我们将不胜感激。谢谢。 最佳答案 我已经按照以下步骤在Qt中离线显示OpenStreetMap(使用QML):在本地主机上构建/运行磁贴服务器。我使用了以下指南:https://switch2osm.org/ser

c++ - Qt3D 从 QGeometry 读取原始顶点数据

我正在使用Qt3D开发应用程序,需要通过C++访问原始顶点数据。我正在使用QObjectPicker进行光线指向,但由于数据是专门的(我开发了一个导入器,它向包含温度读数的每个顶点添加了一个额外的属性)我不能使用QObjectPicker方便地从点读取数据。3D对象正在通过QMesh加载,所以我相信访问原始数据的最佳方式是通过QMesh的QGeometry成员.如果我错了纠正我。QGeometry有一个包含顶点属性的QAttributevector。(同样,如果我错了,请纠正我。)从这一点来看,我不确定如何从特定的顶点索引读取数据。我的猜测是我需要通过了解每个顶点数据的大小并从其偏移量

c++ - 如何在Qt中的QGridLayout中设置QPushButton的大小

我目前正在学习qt。我正在尝试构建一个带有81QPushButton的小型GUI程序。我想将这些按钮设置为9行和9列。我认为实现此布局的最佳方法是使用QGridLayout。这是运行后的样子:我尝试了很多方法来改变按钮的大小,但按钮的大小仍然是默认的。这是我的代码:voidMainWindow::setButtons(){constQSizebtnSize=QSize(50,50);for(inti=0;isetText(QString::number(i));btn[i]->resize(btnSize);}QGridLayout*btnLayout=newQGridLayout(c

c++ - Qt3D - 如何不绘制网格?

我不想在场景中绘制一些对象。在普通的OpenGL中,我们只需不调用与绘制网格相关的函数即可。不幸的是,我没有在QML中找到这个“功能”。实体不包含“可见性”属性等。当然,我们可以尝试将制服发送到着色器,并在需要时丢弃渲染-它会起作用,但这种方法看起来不太好。是否可以通过使用QML来做到这一点,或者应该在cpp文件中创建完整的渲染功能? 最佳答案 是的,这是可能的。最简单的解决方案是从您的实体中删除Material。你会有这样的东西:Entity{propertyboolvisible:true//orideally,dynamica

Qt新建项目与运行窗口

目录1. 前言2.新建项目3. 项目文件目录分析4. 总结1. 前言        使用Qt之后你会慢慢地发现Qt框架设计的巧妙之处,跟随着Qt给的开发框架进行开发设计可以很容易很高效地完成应用开发,编写出的应用稳定性高、可靠性强。接下来就让我们跟随着Qt Creator的开发流程,快速地开发C++桌面应用。2.新建项目        打开Qt Creator,点击文件→新建文件或项目,如下图所示:     然后弹出新建项目对话框,如下图所示:     如上图所示,你会看到Application对应有8个选项,第一个是Qt Widgets应用,也就是Qt传统的使用C++语言开发的基于控件的应用

c++ - Qt如何删除QObjects?

据我了解,以下代码是创建QObject的完美方式QLabel*label=newQLabel("label");QWidgetwindow;label->setParent(&window);window.show();当我在无处不在阅读时,“父对象获得了新创建对象的所有权——并最终调用了删除”,或者“复合对象获得了子对象的所有权,因此,只要父类拥有完成后,您可以放心,当父级被销毁时,子QObjects将被销毁”(来自HowdoesQtdeleteobjects?AndwhatisthebestwaytostoreQObjects?)有人能告诉我Qt如何“取得”QObject的所有权吗

c++ - 尝试在 qt 中创建访问器函数

你应该能够通过查看名为motorcontrol的函数来了解我正在尝试做什么在里面:Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){}我得到的错误是我不能在那里声明一个函数,但是如果我把它放在括号之外,我得到的错误是ui没有在此范围内声明。我明白为什么会收到此错误,但我不知道解决方法。我可以让ui成为一个全局变量/对象吗?如果可以,我该怎么做,或者是否有另一种方法来解决/解决这个问题。这是我的代码:#include"widget.h"#include"ui_widget.h"#include#include

c++ - Qt 便携工控机 : only QSharedMemory?

我正在寻找有关选择一种可移植的方式以稳健的方式实现本地IPC的建议,因为我是C++的新手,并且想避免摆弄共享内存和锁的常见陷阱;因此我在考虑消息传递风格的ipc。出于其他原因,我正计划使用qt,因此我看了一下Qtipc选项。如果我理解正确,qt不提供完全可移植的消息传递ipc功能。它可以使用d-bus,但在windows上使用它会是一个问题。其他方式仅限于嵌入式linux平台(我想将这个东西移植到AIX)。我找不到使用QSharedMemory和QSystemSemaphores的“信号和槽”或消息传递风格的实现因此:我是否只能在QSM/QSS上实现某个功能?我还可以学习哪些其他选择?