Я использую 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
Изображение выше;
