QQuickWidget 无法推广

Posted

技术标签:

【中文标题】QQuickWidget 无法推广【英文标题】:QQuickWidget cannot promote 【发布时间】:2020-08-25 11:41:26 【问题描述】:

我们在推广小部件时遇到了麻烦。当我们尝试将 QQuickWidget 提升到我们的类时,尽管有其他基类,但我们看不到 QQuickWidget 作为基类。但是有时它会出现,除非没有做任何特别的事情。 你认为这是一个错误还是有什么办法可以解决这个问题?

【问题讨论】:

*** 让您只需将图片直接粘贴到问题中。请勿将任何外部网站用于图像。只需从屏幕截图编辑器中按 Ctrl-C,然后在问题中的选定点按 Ctrl-V。请记住:这里的问题和答案应该在“可预见的未来”仍然可用。文件托管网站在对您感到厌烦后只会删除内容(我是认真的 - 这些链接会在一段时间后停止工作,Dropbox 不会永久托管东西,他们会在一个下午破产)。所以我肯定会花很多钱让 imgur 托管他们的图片内容。 我们公司有一个协议,我们不能将项目图像上传到除 Dropbox 之外的任何地方。很抱歉。 这也意味着你不能用图像来问关于 SO 的问题,因为在 SO 上使用它的图像托管确实是一个要求。您可能希望在可能的情况下考虑换工作——他们不会完成任何工作,或者每个人都违反了这条规则。无论哪种方式,这都是一个病态的环境——很抱歉你发现自己陷入了这样一个难题。该政策是对“IT 安全”的一次失败尝试:他们相信他们可以通过这种方式控制无意的披露。天哪,你猜怎么着:互联网永远不会忘记。你发的图?据我所知,它会一直陪伴我们直到时间结束。 【参考方案1】:

首先:您真的需要设计器知道小部件是QQuickWidget 类型吗?你可能不会,所以直接从QWidget 推广它。毕竟,它们都是小部件!基类的唯一区别在于它公开了特定于派生类的属性,以便使用 Designer Ui 进行编辑 - 仅此而已。如果您特别需要使用 Designer 界面调整 QQuickWidget 的某些属性,则可以手动替换 .ui 文件中的名称 - 它只是一个 XML 文件,易于编辑和理解。

具体来说:

sed -e 's/QWidget/QQuickWidget/g' < mypromoted.ui > myfinal.ui

这就是全部,您可以随时在文本编辑器中验证结果。

【讨论】:

我们正在 Qml 上设计我们的按钮、标签等,并且我们正在尝试将 C++ 类连接到我们的 QML 文件。我们不知道执行此操作的正确方法。当我们推广 QQuickWidgets 时,我们将 C++ 类连接到 QML 文件,我们可以更改它们的值和控制事件。我们做错了还是有什么简单的方法可以做到这一点? @Monster 忘记你现在的做法。如果您在另一个窗口中有多个QQuickWidget,那么您几乎注定要失败。它不是为那样使用而设计的。您必须使用 QML 运行整个 UI 窗口,然后从 C++ 连接相对容易 - Qt 有一整套关于它的extensive 文档页面。阅读:doc.qt.io/qt-5/qtqml-cppintegration-overview.html 并确保您点击链接到关注细节的各个子页面。简而言之:您可以使用 JS 引擎上下文 (IIRC) 从 C++ 代码中按名称访问任何 QML 对象。

以上是关于QQuickWidget 无法推广的主要内容,如果未能解决你的问题,请参考以下文章

使用 QScrollArea 和 QQuickWidget

在 QQuickWidget 中更新/重绘仪表

QQuickWidget 抓图

如何拖动一个qquickwidget?

QQuickWidget 中的 MultiPointTouchArea 行为

QQuickwidget 抓取窗口区域外的图像