问题标签 [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.

0 投票
2 回答
595 浏览

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:那么动态添加项目可能存在问题。也许应该手动修改根对象的高度和宽度(或者不应该?)例如:

0 投票
1 回答
1075 浏览

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

问题出在哪里?

0 投票
1 回答
1344 浏览

qt - 在 QStackedWidget 中添加 QQuickWidget

我正在尝试在 qstackedwidget 中添加一个 qquickwidget 以及其他一些 qwidget。但是,当我尝试将当前小部件设置为 qquickwidget 时,窗口上不会出现任何内容。还有什么需要做的吗?我还将qquickwidget的view属性设置为 true

qml 代码 -

0 投票
1 回答
1236 浏览

qt - 如何将 QML 视图嵌入到本机窗口中

我在尝试将 QML 视图插入本机 OSX 窗口时遇到问题。我知道这是可能的,但我不知道我做错了什么。

基本上,我的目标是,给定一个原生 NSView*,然后嵌入一个基于 QML 的小部件。问题是我让它指出它确实在视图内渲染了 qml,但它在侧面创建了一个额外的透明窗口,并且它似乎没有正确重绘 QML 视图。

这是我正在使用的代码(请忽略所有内存泄漏):

这是简单的qml:

0 投票
1 回答
3211 浏览

c++ - Qt无法将目标移动到线程

我在我的 Qt 5.7(在 Windows 10 上)应用程序中遇到了一个奇怪的错误,并且找不到这种行为的常见罪魁祸首:

  • 被移动的对象有一个父对象——当然不是这样
  • 试图将对象拉到线程而不是推送它 - 这是错误的原因但是我不知道它来自哪里

完整的错误信息是

QObject::moveToThread: 当前线程 (0x2afcca68) 不是对象的线程 (0x34f4acc8)。无法移动到目标线程 (0x34f4adc8)

QObject::setParent:无法设置父级,新父级在不同的线程中

这也是我的代码:

主文件

mainmain.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(...)但这是由于未能将对象正确移动到另一个线程而导致的。


更新:

错误消息仅在以发布模式构建时出现,但无论构建类型如何,我的错误仍然存​​在。

0 投票
0 回答
414 浏览

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

0 投票
2 回答
1337 浏览

c++ - 无法在不中断堆叠顺序的情况下使 QQuickWidget 背景透明

我在使QQuickWidget背景透明时遇到问题。

我想在 aQQuickWidget下放置 a QWidget。使用QQuickWidget源 qml 文件。当我使用 Qt 4.8 时,我使用了QDeclarativeView. QDeclarativeView不再使用从 Qt 4 到 Qt 5 的移植。因此,我使用QQuickWidget代替QDeclarativeView,如下:

如果我做:

QQuickWidget然后背景变得透明,但打破了涉及同一窗口内部其他小部件的堆叠顺序。

我想QQuickWidgetQWidget. 这可能吗?如果没有,您建议什么解决方法?

(1) 这是 mainWidget 的背景图片:

在此处输入图像描述

(2) 这是QQuickWidget的背景。qml 文件使用此图像:

在此处输入图像描述

(3) 这是topWidget的背景图:

在此处输入图像描述

(4) 我想要什么:

在此处输入图像描述

(5) 当我设置WA_AlwaysStackOnTopfalse时我得到什么:

在此处输入图像描述

(6) 当我设置WA_AlwaysStackOnToptrue时我得到什么:

在此处输入图像描述

0 投票
1 回答
760 浏览

qt - 在 qwidget 中嵌入 qquickwindow

如何将 qquickwindow 嵌入到 qwidget 中?我的代码是这样的:

主窗口.cpp

抽屉.qml

上面的代码是创建新的单独窗口而不是将其嵌入到 gridLayout_qml 中。如何将此 qquickwindow 插入到 gridLayout_qml,任何指针?感谢 Qt 5.6.2 windows 7 msvc2015。

0 投票
1 回答
1074 浏览

c++ - 使用 QQuickWidget 运行 QtVirtualKeyboard

我正在尝试使 QtVirtualKeyboard 示例与 QQuickWidget 而不是 QQuickView 一起使用。对于 QuickView,我使用以下 main.cpp 代码,对我来说效果很好:

当使用以下 main.cpp 实现更改为 QQuickWidgets 时,我遇到了问题:

当我点击输入字段时,虚拟键盘出现了,但是当我开始在键盘上输入时,我收到消息“输入法未设置”,这似乎与输入法插件有关。输入字段中不显示任何字符。有任何想法吗?QML 代码在 main.cpp 的上述变体之间没有变化

顺便说一句:我正在使用 Linux、gcc、Qt 5.9.0、EGLFS 插件

感谢您的任何建议!

问候,帕特里克

0 投票
0 回答
974 浏览

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接收所有非按钮单击鼠标事件。

我玩过事件过滤器和重新设置,但我似乎没有得到任何结果。有没有人成功尝试过这样的事情?