问题标签 [qt5.6]

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

qt5.6 - 如何在 5.6 中直接键盘输入 QOpenGLWindow

我将我的 Qt 应用程序从 Qt 5.3 转换为 5.6。以前我使用 QGLWidget,现在升级到 QWidget 中包含的 QOpenGLWindow。我希望我的窗口能够处理一些按键事件。QOpenGLWindow 确实具有处理键盘事件的受保护方法。但是,与旧的 QGLWidget 不同,它没有 setFocus() 方法,并且没有调用我的处理程序。补救措施是什么?即使当我尝试将焦点设置到拥有的容器上,然后手动将事件传递给 QOpenGLWindow 时,似乎也没有任何事件发生。

0 投票
2 回答
1961 浏览

c++ - QString 在 Qt 5.6 中拆分

在上面的示例中,我希望字符串列表包含两个条目,但它只包含 1,这与 strTest 相同......为什么拆分不起作用?

我也试过:

结果是一样的。

0 投票
1 回答
1579 浏览

c++ - QWidget 的背景应用于其所有 QWidget 子项

我选择使用 Qt 来管理我正在处理的项目的 GUI。

在我的底部找到如何应用图片后QWidget,我注意到它对添加到其中的所有组件都有影响。

无论通过该setStyleSheet方法应用什么样式,甚至使用 a QPixmap,这些元素的背景始终是为QWidget容器定义的图像。

我怎样才能避免这种行为?

这是我的代码:

0 投票
1 回答
3542 浏览

qt - Qt5.6:高 DPI 支持和 OpenGL (OpenSceneGraph)

我有一个最小的应用程序,它使用QOpenGLWidget集成了 OpenGL 包装库(OpenSceneGraph)。我试图弄清楚在处理我使用的 OpenGL 内容时如何正确使用 Qt5.6 对高 DPI 屏幕的支持。

我的main()函数有以下代码:

QtOSGWidget源自QOpenGLWidgetOpenSceneGraph 内容:我osgViewer::GraphicsWindowEmbedded用来渲染我的简单场景。

为了将 OSG 与 Qt 合并,我重新定义了*GL()方法paintGL()resizeGL()initializeGL(). 我按照 Qt 文档了解每种*GL()方法应包含的内容,即:

  • paintGL()确保查看器已更新
  • resizeGL()确保正确调整图形窗口的大小(连同相机和视口);
  • initializeGL()确保 OpenGL 状态已初始化。
  • 我还重新定义了 Qt 鼠标事件,以便将事件传递给 OSG

当我在普通分辨率屏幕上运行我的示例时,或者使用QApplication::setAttribute(Qt::AA_DisableHighDpiScaling);时,场景看起来应该:

圆柱体示例 - 高 DPI 支持已关闭

此外,当我操纵相机视图时,鼠标坐标被正确捕获。

但是,当我设置高 DPI 选项时,这就是我得到的:

高 DPI 已开启

事件的鼠标坐标也被缩放,并且没有正确传递给 OpenSceneGraph 的事件处理程序。

如您所见,图形窗口大小不是由 Qt 缩放的。这可能是因为我设置尺寸的方式:

Qt 不会按比例缩放该大小。鼠标事件坐标也会发生同样的事情。

我的问题:有没有办法知道将执行缩放的大小以便resizeGL()正确执行?或者解决问题的正确方法是什么?

使用手动缩放更新/解决方案:感谢@AlexanderVX 的回答,我找到了缩放解决方案。首先,我需要知道一些 DPI 在 X 和 Y 维度上的参考值。然后我根据它计算缩放坐标并将它们传递给我的小部件QtOSGWidget。因此,代码main()必须包含:

然后,每当我提到需要传递给 OpenSceneGraph (OpenGL) 内容的大小调整函数时,我都必须进行缩放,例如:

最终更新:由于我的应用程序的目标平台是 Windows 7-10,因此坚持@AlexanderV(第二部分)提出的答案更有意义,即使用SetProcessDPIAware()函数。

0 投票
3 回答
1273 浏览

qt - Qt5.6 QML,为什么动态模型在垃圾回收后会被销毁?

我有可变数量的组件,所以我试图给每个组件自己的model. 在这个例子中,我只是创建了一个,但想法是一样的。

GC() 有点随机,所以在示例中,我在单击后强制gc() 清除问题。发生的事情是model被破坏并变为空。之后点击方法无法使用它。

main.qml:

c++/mymodel.h:

main.cpp 只是注册类型:

你看到什么了:

运行

单击任何名称。它将工作一次,之后它们将未定义,因为model变为空。

例如

我的问题是为什么会这样,当我仍然有参考时?

在示例中,onClicked可以更改为label.text而不是model.name修复,但真正的问题是,通常,model对象可以随时访问任何数据。例如,当框需要重绘时。随机数据消失,具体取决于 GC。

我试过让 C++ 管理动态模型的生命周期。如果我知道QML何时完成它,这可能会起作用。

感谢您提供信息和想法。

在 Windows 8.1/qt5.6mingw 上运行

EDIT1:文件作为要点, https ://gist.github.com/anonymous/86118b67ec804e6149423c14792f312d

0 投票
0 回答
175 浏览

qtquick2 - Qt 5.6 上的 windows 编译器错误

我从 QT creator 开始

我的目标是使用它来创建一个使用 Qt3D 和 QT quick Ui 的应用程序

当我尝试创建一个项目时,它显示我还没有编译器:(链接上的屏幕截图)

QT新建项目,没有编译错误

如果我尝试构建一个示例,它会显示以下错误:

16:35:11:配置错误。检查问题视图以获取详细信息。构建/部署项目 shadow-map-qml 时出错(套件:Desktop Qt 5.6.0 MSVC2015 64bit)执行步骤“Make”时

我在安装时做错了什么还是我需要下载并安装一个单独的编译器?如果是 Windows 10 上的 Qt 5.6,我应该下载哪个?

0 投票
1 回答
726 浏览

c++ - #include QtWebKit (Qt4) 或 QtWebKitWidgets (Qt<5.6) 或 QtWebEngineWidgets (Qt>=5.6)

我正在从事的项目可能是在 Q4/5/5.6 的环境中开发的,考虑到 Qt 与 web kit 相关的更改(用于通过 javascript 界面显示谷歌地图),这会造成一些困难。

我设法通过执行以下操作在项目文件中加载了正确的模块:

问题是每个模块都有不同的#include

是否可以使代码可移植以便它可以发现#include应该执行哪些代码?

0 投票
2 回答
722 浏览

c++ - QML/QtQuick 和 QWidget 之间的两种方式连接

我正在尝试制作一个使用 QSerialPort 和 QtQuick 的应用程序,因此我需要以某种方式将类似桌面的应用程序连接到 QML。我设法(好的,我复制并进行了一些更改)将信息从 QML 发送到 main.cpp,但我无法以其他方式发送任何内容。想要的效果是管理 .cpp 中的所有内容,添加和删除 ListElements 并发送参数以绘制图形。

我的班级.h

main.qml

此外,对 main.qml 的任何更改都会中断第一个连接,我什至不知道为什么。你能给我一些建议或例子吗?我在 Qt 文档上花了第二天,但我仍然做不到:(

0 投票
5 回答
9765 浏览

c++ - QSqlDatabase:未在 Ubuntu 15.04 64 位上加载 QMYSQL 驱动程序

在 Ubuntu 15.04 64 位中,我安装了 Qt5.6(在线安装程序),在尝试将我的开发环境从 Windows 7 迁移到 Linux 时,我遇到了以下问题:

之后,我设法找到 ~/Qt/5.6/gcc_64/plugins/sqldrivers/libqsqlmysql.so然后:

告诉libmysqlclient_r.so.16 => not found. 事实上,我似乎有一个更新的版本:

也许这就是问题所在。有人可以确认吗?我应该如何进行?

0 投票
2 回答
101 浏览

c++ - 包装 QObject::connect 错误

我正在编写一个订阅管理器,其想法是创建一个信号和插槽连接,并且可以在插槽上挂钩多个订阅,当收到更新时,将通知插槽的所有订阅新数据。

问题是,在我管理订阅的类中,我有一个名为“setupSubscription”的方法,这是原型:

枚举类型 eSlotID 包含每个插槽的唯一 ID,其想法是订阅者只需指定 ID 即可设置订阅。

它处于开发的早期阶段和 setupSubscription 的代码:

当然还有很多事情要做,但这会导致编译错误:

我相信原型是正确的,在调试器中单步执行连接,然后将其包装到我的设置方法中。

我不确定该错误意味着什么,因为类实现和原型匹配并且存在。

使用示例:

msSlotSubMngr 是槽订阅类的一个实例。

这是包装前的原始代码,编译时没有任何错误:

当我单独设置工作代码时,这是连接方法的原型:

eSlotID 声明:

插槽原型:

插槽实现: