Qml 错误:无法将 QObject* 分配给 QQuickItem

Posted

技术标签:

【中文标题】Qml 错误:无法将 QObject* 分配给 QQuickItem【英文标题】:Qml Error: Cannot assign QObject* to QQuickItem 【发布时间】:2020-05-25 11:05:30 【问题描述】:

我在 ApplicationWindow 中有一个带有 MouseArea 的矩形。通过单击鼠标区域,应该增加矩形的大小,这非常有效。但是以某种方式将 ApplicationWindow 中间的矩形居中不起作用

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5

ApplicationWindow 
    id: originalWindow
    visible: true
    width: 1920
    height: 1080
    title: qsTr("Bookshop Management System")


        Rectangle 
            id: searchUserButton
            x: 450
            y: 206

            radius: 10
            width: 200
            height: 200
            color: "#ccc8c8"

            MouseArea 
                anchors.fill: parent
                onClicked: searchUserButton.width = 1100
                    searchUserButton.height = 600
                    searchUserButton.anchors.centerIn = originalWindow
                    rectangle2.visible = false
                    rectangle3.visible = false
                    rectangle4.visible = false
                    rectangle5.visible = false
                    rectangle6.visible = false
                

            

        

错误代码是`错误:

Cannot assign QObject* to QQuickItem*

【问题讨论】:

试试:searchUserButton.anchors.centerIn = originalWindow.contentItem 【参考方案1】:

您已经设置了 searchUserButton 的宽度和高度,因此您只需正确设置此按钮的 x 和 y 坐标。

searchUserButton.x = (originalWindow.width - searchUserButton.width) / 2
searchUserButton.y = (originalWindow.height - searchUserButton.height) / 2

【讨论】:

以上是关于Qml 错误:无法将 QObject* 分配给 QQuickItem的主要内容,如果未能解决你的问题,请参考以下文章

Q_INVOKABLE 是不是需要在 Qt5 中从 QML 调用公共 QObject 函数?

QML 未能检测到在 C++ 中破坏的 QObject

从 qml 编辑 QObject 属性

pyqt5:从插槽返回 QObject

PyQt5 + QML:带有“无法将[未定义]分配给QString”的空窗口

QML:获取 QObject 父级