问题标签 [qquickwidget]
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 - 使用 QScrollArea 和 QQuickWidget
我有一个 QQuickWidget。我想根据其 QML 内容使其可自动调整,并提供水平和垂直滚动条,以防其内容无法适应窗口。
我将 QQuickWidget 放在 QScrollArea 内,并向 QScrollArea 添加布局以使 QQuickWidget 填充它。在父窗口构造函数中,我添加了一行:
scroll_area->setWidget(quick_widget);
但是没有滚动条可用,与 QML 内容大小无关。QQuickWidget 和 QScrollArea 应该如何配置为我需要的工作?
UPDATE1:嗯,我正在尝试通过 QDesigner 来实现。实际的 UI XML 是:
在调试时,我可以看到 QScrollArea.widget() 已经设置为 quick_widget(没有强制调用 scroll_area.setWidget()),但仍然没有可用的滚动条,即使 quick_widget 内容不适合它的大小。
UPDATE2:那么动态添加项目可能存在问题。也许应该手动修改根对象的高度和宽度(或者不应该?)例如:
opengl - 黑色矩形代替 QQuickWidget(特定用例)。OpenGL问题
我们使用 QT 5.6 版我们在 Qt Widgets 上有 c++ 应用程序。在此应用程序的某些插件(使用 Q_PLUGIN_METADATA 和 Q_INTERFACES 创建)中,我们使用 QML:在某些 Widget 中,我们创建 QQuickWidget
使用上下文进行一些操作
并设置源
有时我们在显示此小部件时遇到问题 - 出现黑色矩形。
我们添加了 libEGL.dll、libGLESv2.dll、d3dcompiler_47.dll 和 opengl32sw.dll。
此外,我们尝试为主 QApplication 设置 Qt::AA_UseSoftwareOpenGL 标志(在 QApplication 构造之前),但此操作没有给出结果。
我们在使用 Win7 的虚拟机上进行了稳定的复制。
添加 RemoteFX 3D 视频适配器后,Virtual mashine 上的 QQuickWidget 看起来不错。但是我们可以在没有 RemoteFX 3D 视频适配器的情况下显示 QQuickWidget 吗?
QQuickWidget 创建后我们在 WinDBG
问题出在哪里?
qt - 在 QStackedWidget 中添加 QQuickWidget
我正在尝试在 qstackedwidget 中添加一个 qquickwidget 以及其他一些 qwidget。但是,当我尝试将当前小部件设置为 qquickwidget 时,窗口上不会出现任何内容。还有什么需要做的吗?我还将qquickwidget的view属性设置为 true
qml 代码 -
qt - 如何将 QML 视图嵌入到本机窗口中
我在尝试将 QML 视图插入本机 OSX 窗口时遇到问题。我知道这是可能的,但我不知道我做错了什么。
基本上,我的目标是,给定一个原生 NSView*,然后嵌入一个基于 QML 的小部件。问题是我让它指出它确实在视图内渲染了 qml,但它在侧面创建了一个额外的透明窗口,并且它似乎没有正确重绘 QML 视图。
这是我正在使用的代码(请忽略所有内存泄漏):
这是简单的qml:
c++ - Qt无法将目标移动到线程
我在我的 Qt 5.7(在 Windows 10 上)应用程序中遇到了一个奇怪的错误,并且找不到这种行为的常见罪魁祸首:
- 被移动的对象有一个父对象——当然不是这样
- 试图将对象拉到线程而不是推送它 - 这是错误的原因但是我不知道它来自哪里
完整的错误信息是
QObject::moveToThread: 当前线程 (0x2afcca68) 不是对象的线程 (0x34f4acc8)。无法移动到目标线程 (0x34f4adc8)
QObject::setParent:无法设置父级,新父级在不同的线程中
这也是我的代码:
主文件
main(main.qml的别名):
CustomQuickWidget.cpp
正如你所看到的,我这里有一个典型的工作线程。我已经确定我的工人(这里DeviceMapper
)没有父母。它也在我的小部件(QThread
也创建了)内部实例化,但与计时器一起移动到线程。
现在除了标题中的明显问题之外,我还必须提及以下内容:
this->timer->moveToThread(this->deviceThread);
调用时没有这样的错误- 这个相同的代码在另一个项目中没有任何问题,这是一个 subdirs 项目 - 一个子项目创建共享库(我也在这个项目中使用)和另一个 - 使用该库的应用程序。
我的另一个应用程序和这个应用程序之间的唯一区别是QQuickWidget
(而不是QWidget
)和QML
. 我很陌生QML
,这也是我的第一次QQuickWidget
,所以我可能会错过一些需要“激活”的明显设置。
我也加了
就在之前this->deviceWorker->moveToThread(this->deviceThread);
,我得到了
这意味着在moveToThread(...)
我的对象属于QThread
实例化的同一个线程之前。在返回相同的结果之后打印线程 ID,moveToThread(...)
但这是由于未能将对象正确移动到另一个线程而导致的。
更新:
错误消息仅在以发布模式构建时出现,但无论构建类型如何,我的错误仍然存在。
qml - QQuickWidget 内部带有 QML。在上方显示另一个 QML,但不在另一个窗口中
我有一个 QQuickWidget (MovableWidget),里面有一个 QML (QML1: Test.qml)
此 QML 有一个按钮,单击时我想在 QML2 上方显示/隐藏另一个 QML (Test2.qml),但不在另一个窗口中(在 Windows 中,两个面板必须在同一个“任务栏”窗口中)。QML1 必须在两种情况下保持位置,QML1 可见或隐藏
我试图在 QML1 内添加一个 QML2 实例,将其设置在上面,但我无法在 QML1 边界之外绘制。所以我想我必须增加 QML1 的大小,所以 TestWidget 的大小,但在这种情况下,我实现的最好的事情是窗口增加了,但到了底部......
主文件
可移动小部件.cpp
测试1.qml
测试2.qml
c++ - 无法在不中断堆叠顺序的情况下使 QQuickWidget 背景透明
我在使QQuickWidget
背景透明时遇到问题。
我想在 aQQuickWidget
下放置 a QWidget
。使用QQuickWidget
源 qml 文件。当我使用 Qt 4.8 时,我使用了QDeclarativeView
. QDeclarativeView
不再使用从 Qt 4 到 Qt 5 的移植。因此,我使用QQuickWidget
代替QDeclarativeView
,如下:
如果我做:
QQuickWidget
然后背景变得透明,但打破了涉及同一窗口内部其他小部件的堆叠顺序。
我想QQuickWidget
在QWidget
. 这可能吗?如果没有,您建议什么解决方法?
(1) 这是 mainWidget 的背景图片:
(2) 这是QQuickWidget的背景。qml 文件使用此图像:
(3) 这是topWidget的背景图:
(4) 我想要什么:
(5) 当我设置WA_AlwaysStackOnTop
为false时我得到什么:
(6) 当我设置WA_AlwaysStackOnTop
为true时我得到什么:
qt - 在 qwidget 中嵌入 qquickwindow
如何将 qquickwindow 嵌入到 qwidget 中?我的代码是这样的:
主窗口.cpp
抽屉.qml
上面的代码是创建新的单独窗口而不是将其嵌入到 gridLayout_qml 中。如何将此 qquickwindow 插入到 gridLayout_qml,任何指针?感谢 Qt 5.6.2 windows 7 msvc2015。
c++ - 使用 QQuickWidget 运行 QtVirtualKeyboard
我正在尝试使 QtVirtualKeyboard 示例与 QQuickWidget 而不是 QQuickView 一起使用。对于 QuickView,我使用以下 main.cpp 代码,对我来说效果很好:
当使用以下 main.cpp 实现更改为 QQuickWidgets 时,我遇到了问题:
当我点击输入字段时,虚拟键盘出现了,但是当我开始在键盘上输入时,我收到消息“输入法未设置”,这似乎与输入法插件有关。输入字段中不显示任何字符。有任何想法吗?QML 代码在 main.cpp 的上述变体之间没有变化
顺便说一句:我正在使用 Linux、gcc、Qt 5.9.0、EGLFS 插件
感谢您的任何建议!
问候,帕特里克
qt - 如何在 QWidget 上放置 QQuickWidget(具有透明度)
我正在尝试使用QQuickWidget作为QWidget的叠加层。QQuickWidget包含一些按钮和一些其他的小部件,它们位于底部。
我发现通过使用setAttribute(Qt::WA_AlwaysStackOnTop)和setClearColor(Qt::transparent)的组合,我可以让QQuickWidget正确覆盖QWidget。但我遇到的问题是所有鼠标事件都被定向到主窗口而不是底层QWidget。
我设置了一个示例项目来重现我的问题。
OverlayItem.qml定义如下:
创建 QQuickWidget 并在创建MainWindow时加载 QML :
这是 MainWindow UI 代码:
如您所见, CentralWidget 包含一个QFrame,而 QFrame 又包含一个QTextBrowser。此示例代码的期望行为是让QTextBrowser在底部覆盖 3 个按钮时保持功能。但是,当我运行此代码时,我无法单击QTextBrowser以使其获得焦点。相反,MainWindow接收所有非按钮单击鼠标事件。
我玩过事件过滤器和重新设置,但我似乎没有得到任何结果。有没有人成功尝试过这样的事情?