问题标签 [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.
qt - Qt5 QML QVariantMap 绑定与更改通知
我有 QVariantMap(不是 QObject,因为没有预定义属性名称)。我将 QVariantMap 注入到 QML 根上下文中,以使用属性值进行绑定。
问题是,当我更改 QVariantMap 或什至更改 QVariantMap 并为更新的对象调用 setContextProperty 时,或者当我更新 contextProperty 返回的(使用 fromValue)对象时,什么也没有发生。所以这看起来像是一次绑定。
那么,以可观察的方式将 Map 或 Map 注入 QML 上下文的正确方法是什么,以便地图中更改的项目将反映在 QML 中?
c++ - Qt 5.4/Qml:防止绑定循环
我有一个包含应用程序设置的全局单例“设置”。当我尝试运行以下代码时,我得到QML CheckBox: Binding loop detected for property "checked"
:
发生此错误的原因很明显,但是如何在没有绑定循环的情况下正确实现此功能?例如,我想在设置单例中保存复选框的当前选中状态。
我正在使用 Qt 5.4 和 Qml Quick 2。
问候,
qt - QtConcurrent::run 如何在主线程上结束?
我在我的应用程序中构建了一个基于 QFuture 的异步网络外观。大致是这样工作的:
我有一个QTimer
触发主线程的调用,它执行以下操作(显然简化了):
我的假设是waitForFinished()
在后台线程执行我的网络请求时会阻塞主线程。相反,我得到一个qFatal
错误:
在堆栈跟踪中,我waitForFinished()
在主线程上看到了我的,但是我看到的不是被阻塞(从下往上读取):
因此,与其等待QFuture
获得值,不如在主线程上发出我所谓的并发任务。这会导致get()
我上面概述的函数被调用,它侦听QEventLoop
. 与此同时,QTimer
火灾再次发生,我从上面得到了断言。
我做错了什么,还是完全有效的QtConcurrent::run
可以导致控制回到主线程?
=== 更新 1
@peppe:正在执行的 lambda 只是执行一个 HTTP GET 并生成将 JSON 响应解析为一个SomeType
对象。结果通过QFuture
.
=== 更新 2
显然这是设计使然。从qfutureinterface.cpp
Qt 5.4.0 第 293-295 行开始:
qt - 如何在 QGraphicsView 中为 QOpenGLWidget 启用抗锯齿?
我已经通过 QGraphicsProxyWidget 将 QOpenGLWidget 添加到 QGraphicsView(不要使用 setviewport):
我尝试了一些方法但不起作用:如果样本 = 4,glwidget 显示黑屏,但样本 = 1 可以,但不能抗锯齿。那么如何在 QGraphicsView 中为 QOpenGLWidget(由 GraphicsproxyWidget 添加)启用抗锯齿功能呢?
有什么帮助吗?谢谢!
qt - 从 Qt 5 WebView 获取日志输出?
我正在尝试从 Qt 5 WebView 网页获取控制台日志输出,但我不知道该怎么做。也许外面的一些人可以帮助我?
我试图启用应该在您右键单击网页时显示的网络检查器,但是当我这样做时没有任何反应。我通过将环境变量 QTWEBKIT_INSPECTOR_SERVER 设置为 1111 设置了一个检查器端口(在 1111 上)。我可以得到一个页面,上面有这个:
但是当我点击链接时,我得到了这个错误:
出于演示目的,我在本地 Web 服务器上有一个网页,如下所示:
QML 文件如下所示:
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
我的项目目录结构
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 核心配置文件上下文
谢谢
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 编译器套件中的调试相关的解释。
c++ - 复制、剪切和过去 qlineEdit
我QLineEdit
在我的应用程序中使用不同的编辑框。现在我将在QLineEdit
.
当我将功能的三个快捷方式连接到公共插槽时,QLineEdit
只有过去的功能才能工作。复制和剪切不起作用。
此外,当我检查contextmenu
右键单击所选文本并按复制时它不起作用。有人知道我做错了什么吗?
visual-studio-2013 - Visual Studio 2013 和 Qt5:QTDIR 设置得太晚
MSVC2013 中的一切都适用于 Qt,除了一件事:没有找到 DLL,因为在设置本地调试环境时没有定义 $(QTDIR)。
我的调试环境设置:
我的 .user 文件:
我不知道为什么,但是 $(QTDIR) 变量对 LocalDebuggerEnvironment 不可用。
它适用于以下调试环境设置:
是否可以让 Visual Studio 正确处理这个问题,还是我必须手动输入路径?