Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QML:鼠标悬停不工作_Qt_Qml_Qtquick2 - Fatal编程技术网

Qt QML:鼠标悬停不工作

Qt QML:鼠标悬停不工作,qt,qml,qtquick2,Qt,Qml,Qtquick2,我有这个QML代码,它非常直截了当,但我的问题是onenterned和onExited根本不起作用。我没有看到任何错误的代码,我觉得这是一个快速错误 import QtQuick 2.2 Rectangle { width: 480 height: 320 Rectangle { x: 30; y: 30 width: 300; height: 240 color: "lightsteelblue" Mo

我有这个QML代码,它非常直截了当,但我的问题是onenterned和onExited根本不起作用。我没有看到任何错误的代码,我觉得这是一个快速错误

import QtQuick 2.2

Rectangle {
    width: 480
    height: 320
    Rectangle {
        x: 30; y: 30
        width: 300; height: 240
        color: "lightsteelblue"

        MouseArea {
            anchors.fill: parent

            hoverEnabled: true

            onEntered: {
                console.log('mouse over ya kbeer');
            }

            onExited: {
                console.log('mouse out ya kbeer');
            }
        }
    }
}
我将其用作qml组件,以便在其他地方使用。我不确定,但可能是因为我必须将它们嵌入另一个Qt Quick项目中,鼠标事件无法到达该项目,因为它已被父项缓存。我不确定


非常感谢您的建议和帮助

我发现问题不在代码或qml上,而是在QCreator本身上,当我更新qml代码时,因为它在资源中,当我单击run时,它不接受最新的更新。现在,在我重建它之后,它工作得很好。但是有人知道为什么会这样吗

资源内置在可执行文件中。如果要更改它们,则需要重新生成exe


您可以通过以下方式尝试添加新的
QML
文件
add new-Qt-QML file
:在这里编写代码(使用Qt-Quick),但通过
view->setSource(qrl::fromLocalFile(“fullpath.QML”))将其加载到
QQuickView
完成应用程序后,将此文件写入资源并使用资源路径。

如何使用此矩形QML项?如果您在另一个QML项目中使用它,该项目也启用了悬停,那么它首先会吃掉鼠标事件,这就是为什么您看不到任何接收到的事件。是的,我在另一个项目中使用它,但不会在上面的项目上使用鼠标悬停,它会捕获onClicked但不是onnetedwell,由于某些原因,鼠标事件不会传播到内部元素。我建议您逐个将MouseArea放在parents元素中,并找出最后一个父元素接收鼠标事件的位置。。。想想为什么它没有传播它。我想我发现了问题,看看我的答案,如果你能帮助我的话,我会很感激的。有时候QtCreator真的没有将修改过的资源文件嵌入到二进制文件中,这就是为什么我通常在更改qml文件时重建。有没有办法解决这个问题?我不想每次更新qml文件时都重新生成如果我知道如何避免这种情况,我不会重新生成:)这是一个已知的问题。但你可以避免这种情况。看到我的答案了吗?为什么QCreator总是把它们放在资源上?因为我每次都要重建,有没有办法不重建?@CreativeCoder您可以只使用.qml文件来编写代码并进行调试,但在发行版中,将此.qml文件写入exe并使用Qt资源系统(在这种情况下,没有人看不到您的源代码,用户也不能删除它。实际上,是您将qml文件作为资源。您可以将它们作为可执行文件的相关文件使用。因此,它们不会嵌入到二进制文件中。此外,建议先使用qml emulator开发qml部分。@CreativeCoder最好使用它r可以删除您的qml代码,您的程序将崩溃,或者用户将根据需要重写您的qml源代码,应用程序将再次崩溃:)@CreativeCoder您可以通过add new-Qt-qml file尝试添加新的qml文件:在此处编写代码(使用Qt Quick),但通过
view->setSource(qrl::fromLocalFile(“fullpath.qml”)将其加载到QQuickView中完成应用程序后,将此文件写入资源并使用资源路径。