检测鼠标光标何时在QT5和QML中的不规则形状图片上



我正在使用qt5和qml(qtcreator和c )开发一个小应用程序。

我想与国家一起展示一张地图,当用户将鼠标通过一个国家时,我想改变国家的颜色,认为这很容易,而且如果所有国家都是矩形。

    Image {
    id: mycountry
    width: 250
    height: 250
    source: "images/myCountry_gray.png"
    MouseArea {
        anchors.fill: parent
        hoverEnabled : true
        onEntered: {
            region.source = "images/myCountry_red.png"
        }
        onExited: {
            region.source = "images/myCountry_gray.png"
        }
    }
}

不幸的是,国家的形状不规则,我只想在鼠标光标在其前沿内部

时才强调该国

您有些人知道如何发展吗?我认为单独使用QML不可能。

使用qpainterpath构建每个国家的形状。您可以使用moveto()和lineto()来执行此操作。一旦拥有此功能,使其成为自定义Qquickitem的成员变量 - 我们称其为CountryItem。您可以通过CountryMapModule暴露于QML之后将图像作为该项目的孩子。

import CountryMapModule 1.0
CountryItem {
    implicitWidth: mapImage.implicitWidth
    implicitHeight: mapImage.implicitHeight
    Image {
        id: mapImage
        source: ":/images/australia.png"
    }
}

覆盖Qquickitem :: mousemoveevent()允许该项目检查鼠标运动。然后可以使用QPainterPath的contains()函数来检查鼠标是否在其中。您可能需要缩放适合图像大小的路径。

相关内容

  • 没有找到相关文章

最新更新