मैं टेक्स्ट बदलने के बाद अपने टेक्स्ट/लेबल की ऊंचाई जानना चाहता हूं। एक उदाहरण के रूप में एक खेल में एक संवाद प्रणाली लेते हैं। यदि मेरे पास प्रदर्शित करने के लिए अधिक टेक्स्ट है, तो लेबल और पृष्ठभूमि की ऊंचाई (स्वचालित रूप से) (और इसके विपरीत) का विस्तार करने की आवश्यकता होगी।

वर्तमान में यह पाठ को सही ढंग से प्रदर्शित करता है (यदि मैं क्लिपिंग को गलत पर सेट करता हूं), लेकिन यह लेबल की ऊंचाई को नहीं बदलता है। इसलिए, यदि मैं एक कॉलम में 3 लेबल लगाता हूं, तो उनमें टेक्स्ट ओवरलैपिंग हो सकता है।

डेल्फी/पास्कल (फ़ायरमोनकी का उपयोग करके) जैसी अन्य भाषाओं में, लेबल के आकार में "ऑटोसाइज" संपत्ति होती है और यह सामग्री की लंबाई (लंबाई) के आधार पर लेबल की ऊंचाई का आकार बदलती है। एक छिपे हुए लेबल के साथ कोई भी केवल दृश्य लेबल की ऊंचाई प्राप्त कर सकता है (और साथ में पृष्ठभूमि को भी तदनुसार बदल सकता है)।

क्या क्यूटी/क्यूएमएल में ऐसा कोई विकल्प है?

एक उदाहरण के अनुरोध के अनुसार मैं (ब्रायन केर्न्स के एक कोर्स से) काम कर रहा हूं, जहां दूसरे और तीसरे लेबल का टेक्स्ट ओवरलैप होता है:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.15

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    Column {
        x: 0
        y: 0
        width: 538
        height: 340
        Label {
            id: label
            x: 60
            y: 38
            text: qsTr("This is a label")
        }

        Label {
            id: label1
            x: 60
            y: 74
            width: 107
            height: 75
            color: "#ff0000"
            text: qsTr("This is a long label title - probably the longest ever")
            wrapMode: Text.WordWrap
            font.pointSize: 13
            font.italic: true
            font.bold: true
            textFormat: Text.AutoText
            clip: false
        }

        Label {
            id: label2
            x: 60
            y: 208
            text: qsTr("This is <font color='blue'><b>H<i>T</i>ML</b>!!!</font>")
            font.pointSize: 40
        }
    }
}
0
Geertie 22 नवम्बर 2020, 13:23

1 उत्तर

सबसे बढ़िया उत्तर

जैसे जारमैन ने सुझाव दिया: लेबल से ऊंचाई की संपत्ति को हटाने से काम होता है। अपने प्रश्न का बेहतर उत्तर देने के लिए मैंने उदाहरण को बदल दिया है और 'कुछ और' की ऊंचाई को संशोधित करने के लिए उस लेबल की छिपी हुई लेबल और उस लेबल की ऑनहाइट चेंज की गई घटना का उपयोग किया है। एक गेम डायलॉग में जो डायलॉग के टेक्स्ट और टेक्स्ट के लिए ही बैकग्राउंड हो सकता है। इस उदाहरण में मैं केवल लेबल 1 की (निश्चित) ऊंचाई को उस पाठ के आधार पर संशोधित करता हूं जिसे मैं लेबल हिडन खिलाता हूं।

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.15

Window {
    id: window
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    Label {
        id: labelHidden
        x: -600
        //y: 74
        width: 200
        //height: 75
        color: "#ff0000"
        text: qsTr("This is a long label title - probably the longest ever")
        wrapMode: Text.WordWrap
        font.pointSize: 13
        font.italic: true
        font.bold: true
        textFormat: Text.AutoText
        clip: false

        onHeightChanged: {
            label1.height = height
            label1.text = text
        }
    }

    Column {
        x: 0
        y: 0
        width: 538
        height: 340
        Label {
            id: label
            x: 60
            y: 38
            text: qsTr("This is a label")
        }

        Label {
            id: label1
            x: 60
            //y: 74
            width: 200
            height: 75
            color: "#ff0000"
            text: qsTr("This is a long label title - probably the longest ever")
            wrapMode: Text.WordWrap
            font.pointSize: 13
            font.italic: true
            font.bold: true
            textFormat: Text.AutoText
            clip: false
        }

        Label {
            id: label2
            x: 60
            y: 208
            text: qsTr("This is <font color='blue'><b>H<i>T</i>ML</b>!!!</font>")
            font.pointSize: 40
        }
    }

    Button {
        id: button
        x: 521
        y: 422
        text: qsTr("Make longer")
        anchors.bottom: parent.bottom
        anchors.bottomMargin: 18

        Connections {
            target: button
            onClicked: {
                labelHidden.text = "This is an even longer text that alters the height of an invisible label and in its turn triggers the onHeightChange event of the invisible label to modify for instance a background height and a label height in a game dialog. For this example it only changes the height of label1."
            }
        }
    }
}
0
Geertie 23 नवम्बर 2020, 11:04