问题标签 [qt5.4]

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 投票
2 回答
3266 浏览

qt - Qt5 QML QVariantMap 绑定与更改通知

我有 QVariantMap(不是 QObject,因为没有预定义属性名称)。我将 QVariantMap 注入到 QML 根上下文中,以使用属性值进行绑定。

问题是,当我更改 QVariantMap 或什至更改 QVariantMap 并为更新的对象调用 setContextProperty 时,或者当我更新 contextProperty 返回的(使用 fromValue)对象时,什么也没有发生。所以这看起来像是一次绑定。

那么,以可观察的方式将 Map 或 Map 注入 QML 上下文的正确方法是什么,以便地图中更改的项目将反映在 QML 中?

0 投票
5 回答
18364 浏览

c++ - Qt 5.4/Qml:防止绑定循环

我有一个包含应用程序设置的全局单例“设置”。当我尝试运行以下代码时,我得到QML CheckBox: Binding loop detected for property "checked"

发生此错误的原因很明显,但是如何在没有绑定循环的情况下正确实现此功能?例如,我想在设置单例中保存复选框的当前选中状态。

我正在使用 Qt 5.4 和 Qml Quick 2。

问候,

0 投票
1 回答
2469 浏览

qt - QtConcurrent::run 如何在主线程上结束?

我在我的应用程序中构建了一个基于 QFuture 的异步网络外观。大致是这样工作的:

我有一个QTimer触发主线程的调用,它执行以下操作(显然简化了):

我的假设是waitForFinished()在后台线程执行我的网络请求时会阻塞主线程。相反,我得到一个qFatal错误:

在堆栈跟踪中,我waitForFinished()在主线程上看到了我的,但是我看到的不是被阻塞(从下往上读取):

因此,与其等待QFuture获得值,不如在主线程上发出我所谓的并发任务。这会导致get()我上面概述的函数被调用,它侦听QEventLoop. 与此同时,QTimer火灾再次发生,我从上面得到了断言。

我做错了什么,还是完全有效的QtConcurrent::run可以导致控制回到主线程?

=== 更新 1

@peppe:正在执行的 lambda 只是执行一个 HTTP GET 并生成将 JSON 响应解析为一个SomeType对象。结果通过QFuture.

=== 更新 2

显然这是设计使然。从qfutureinterface.cppQt 5.4.0 第 293-295 行开始:

0 投票
1 回答
3095 浏览

qt - 如何在 QGraphicsView 中为 QOpenGLWidget 启用抗锯齿?

我已经通过 QGraphicsProxyWidget 将 QOpenGLWidget 添加到 QGraphicsView(不要使用 setviewport):

我尝试了一些方法但不起作用:如果样本 = 4,glwidget 显示黑屏,但样本 = 1 可以,但不能抗锯齿。那么如何在 QGraphicsView 中为 QOpenGLWidget(由 GraphicsproxyWidget 添加)启用抗锯齿功能呢?

有什么帮助吗?谢谢!

0 投票
1 回答
1840 浏览

qt - 从 Qt 5 WebView 获取日志输出?

我正在尝试从 Qt 5 WebView 网页获取控制台日志输出,但我不知道该怎么做。也许外面的一些人可以帮助我?

我试图启用应该在您右键单击网页时显示的网络检查器,但是当我这样做时没有任何反应。我通过将环境变量 QTWEBKIT_INSPECTOR_SERVER 设置为 1111 设置了一个检查器端口(在 1111 上)。我可以得到一个页面,上面有这个:

但是当我点击链接时,我得到了这个错误:

出于演示目的,我在本地 Web 服务器上有一个网页,如下所示:

QML 文件如下所示:

0 投票
1 回答
3928 浏览

android - “未安装模块“QtQuick””(Android 移植)

我正在尝试使用 qt5.4 将我的应用程序移植到 android,但出现此错误:

W/Qt (30916): qrc:/qml/FrontEnd.qml:1 ((null)): qrc:/qml/FrontEnd.qml:1:1: 模块“QtQuick”未安装

这是我的 .pro

这是我的部署.pri:

在我的 FrontEnd.qml 我有这个导入:

我看不出与在 Android 上正常工作的示例项目的 .pro 有任何实质性区别。

更新

我看到另一个示例“日历”,我注意到我缺少这个标志“OTHER_FILES”所以我添加了我的 QML 文件的所有路径,但问题仍然存在。

我还从智能手机中检索了 apk,并提取了内容。我注意到我的 apk 没有包含一些在 apk 示例中有效的库:

libqml_Qt_labs_folderlistmodel_libqmlfolderlistmodelplugin.so libqml_Qt_labs_settings_libqmlsettingsplugin.so libqml_QtQml_Models.2_libmodelsplugin.so libqml_QtQml_StateMachine_libqtqmlstatemachine.so libqml_QtQuick.2_libqtquick2plugin.so libqml_QtQuick_Controls_libqtquickcontrolsplugin.so libqml_QtQuick_Controls_Styles_Android_libqtquickcontrolsandroidstyleplugin.so libqml_QtQuick_Dialogs_libdialogplugin.so libqml_QtQuick_Dialogs_Private_libdialogsprivateplugin.so libqml_QtQuick_Layouts_libqquicklayoutsplugin.so libqml_QtQuick_Window.2_libwindowplugin.so

我的项目目录结构

0 投票
0 回答
457 浏览

c++ - 为什么我的 glGetAttribLocation 为位置和颜色返回 0

我不明白为什么 glGetAttribLocation 为我的 in_vertex 和 in_color 返回 0,而不是 0 和 1

我的着色器加载器

我的输出:

顶点着色器

在这个顶点着色器中,我尝试替换“in vec3 in_position;” 通过“在 vec3 布局(位置 = 0)in_position;”

“在 vec3 in_color 中;” 通过“在 vec3 布局(位置 = 1)in_color;”

并删除 glBindAttribLocation 指令;

但我有相同的输出(即 glGetAttribLocation 返回 0)

片段着色器

信息:[版本 GLSL:3.30] [版本 OpenGL:3.3(核心配置文件)Mesa 10.2.6]

我在 Debian 杰西

我使用由 Qt5 管理的 OpenGL 核心配置文件上下文

谢谢

0 投票
0 回答
5038 浏览

c++ - 使用 QtQuick 调试消息“传递给 C 运行时函数的无效参数”

我只是在学习 QtQuick 并且遇到了一些我无法解释的事情。只是为了提供一些背景,我正在使用以下内容:

  • QtCreator 3.1.2 开源
  • 使用 MinGW-64 和 posix 线程和 SEH 从源代码构建的 Qt 5.4 调试库

我的 QML 如下所示:

该示例似乎运行良好,但我在 QtCreator 的“应用程序输出”控制台中收到一条调试消息,其中包含以下文本:

“传递给 C 运行时函数的参数无效。”

我通过一次向窗口添加一个组件进行了一些测试,发现标签组件似乎导致出现此消息。

有谁知道为什么会发生这种情况和/或知道我怎样才能让它消失?我应该关心这个消息吗?我担心这会在我的应用程序中导致致命的异常。

附加信息:

在找到 Dennis Yurichev 关于如何使用 gdb 调试此错误的好帖子(在此处找到)之后,我能够生成以下堆栈跟踪。我还没有通过堆栈跟踪得出任何结论,但我想发布它以防有人有兴趣帮助我解决这个问题:

附加调试信息:

怀疑有错误的代码来自qv4value_p.h

...具体来说,在 assignment 之后v.i = val ^ NaNEncodeMask,gdb 调试器中的结果如下:

我不明白这个联合如何能够将大量从 quint64 正确转换为一致地加倍?谁能解释这段代码的原始作者试图实现的目标?

2015 年 2 月 28 日发现的其他信息 - 显然,上述信息仅适用于调试版本。我构建了这个版本的 Qt5.4 的发布版本,并且无法复制该问题。然后切换回调试版本,我再次重新创建了问题。因此,我不会为此问题提交错误报告。相反,我正在寻找与 MinGW64 编译器套件中的调试相关的解释。

0 投票
1 回答
1401 浏览

c++ - 复制、剪切和过去 qlineEdit

QLineEdit在我的应用程序中使用不同的编辑框。现在我将在QLineEdit.

当我将功能的三个快捷方式连接到公共插槽时,QLineEdit只有过去的功能才能工作。复制和剪切不起作用。

此外,当我检查contextmenu右键单击所选文本并按复制时它不起作用。有人知道我做错了什么吗?

0 投票
3 回答
8996 浏览

visual-studio-2013 - Visual Studio 2013 和 Qt5:QTDIR 设置得太晚

MSVC2013 中的一切都适用于 Qt,除了一件事:没有找到 DLL,因为在设置本地调试环境时没有定义 $(QTDIR)。

我的调试环境设置:

我的 .user 文件:

我不知道为什么,但是 $(QTDIR) 变量对 LocalDebuggerEnvironment 不可用。

它适用于以下调试环境设置:

是否可以让 Visual Studio 正确处理这个问题,还是我必须手动输入路径?