Qt QML Как найти ширину и высоту фигуры? - PullRequest
1 голос
/ 17 марта 2019

Я использую Shape, нарисованный с использованием ShapePath с PathSvg, например:

import QtQuick 2.12
import QtQuick.Controls 2.5
import QtQuick.Shapes 1.12
import QtQml 2.12

Item
{
    property var m
    property color col: "white"

    Shape
    {
        id: ashape
        containsMode: Shape.FillContains

        ShapePath 
        {
            strokeWidth: 1
            strokeColor: "transparent"
            fillColor: col

            PathSvg
            {
                path: m.path
            }
        }
    }

    Text
    {
       width: ashape.implicitWidth   // these are zero
       height: ashape.implicitHeight  // so it doesnt work

        color: "white"
        text: "hello"
        font.pointSize: 12
    }
}

Я хотел поместить Text над формой, но я не могу получить ширину и высоту для размещения текста.

Есть идеи? спасибо.

Обновление

Вот полный пример. Я хочу, чтобы текст появлялся поверх фигуры;

main.qml

import QtQuick 2.12
import QtQuick.Controls 2.5
import QtQuick.Shapes 1.12
import QtQml 2.12


ApplicationWindow
{
    visible: true
    width: 640
    height: 480

    Shape
    {
        id: ashape        
        ShapePath 
        {

            fillColor: "red"

            PathSvg
            {
                path: "M100 100 l0 100 l100 0 Z"
            }
        }

        Text
        {
            // want the text to appear over the shape
            text: "hello"
            font.pointSize: 12
        }
    }
}

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <qqmlcontext.h>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}

q.pro

TEMPLATE = app

QT += qml quick quickcontrols2
CONFIG += console

SOURCES += main.cpp

RESOURCES += qml.qrc

Обновление 2

Изображение выше;

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...