1

アプリの GUI をセットアップするために QML (Qt Quick) を使用していますが、奇妙な動作をしています。

ここに私の最初のコードがあります:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3

Rectangle {
    id: rectangle1
    color: palette.grey

    ColumnLayout
    {
        id: columnLayout1

        Label
        {
            id: label1
            text: qsTr("Target")
            font.pointSize: 22
        }

        ProgressBar
        {
            id: progressBar1
            value: 0.5
        }
    } }

...レイアウトを提供します:

初期レイアウト

次に、センターを固定します。

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3

Rectangle
{
    id: rectangle1
    color: palette.grey

    ColumnLayout
    {
        id: columnLayout1
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter

        Label
        {
            id: label1
            text: qsTr("Target")
            font.pointSize: 22
        }

        ProgressBar
        {
            id: progressBar1
            value: 0.5
        }
    }
}

ここで問題ありません、私は得ます:

ここに画像の説明を入力

スライダーを回転させると、問題が発生します。

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3

Rectangle
{
    id: rectangle1
    color: palette.grey

    ColumnLayout
    {
        id: columnLayout1
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter

        Label
        {
            id: label1
            text: qsTr("Target")
            font.pointSize: 22
        }

        ProgressBar
        {
            id: progressBar1
            rotation: 90
            value: 0.5
        }
    }
}

ここでは、Qt がスライダーを回転させ、回転したスライダーを使用してレイアウトを計算することを期待していましたが、そうではありません。実際には、レイアウトはスライダーを回転させずに計算したようで、スライダーのみを回転させます。これは、列ではなくなったレイアウトになります。

ここに画像の説明を入力

これは少しバグがあるように見えますね。それとも私は何か間違ったことをしていますか?

スライダーをアイテムにラップすると、別の問題が発生します(実際にアイテムをいじって、回避策を見つけられるかどうかを確認しました)。

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3

Rectangle
{
    id: rectangle1
    color: palette.grey

    ColumnLayout
    {
        id: columnLayout1
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter

        Label
        {
            id: label1
            text: qsTr("Target")
            font.pointSize: 22
        }

        Item
        {
            ProgressBar
            {
                id: progressBar1
                value: 0.5
            }
        }
    }
}

そして、この場合、私が得るのはラベルの上にあるスライダーです(ただし、コードではその後に定義されています):

ここに画像の説明を入力

これも私には奇妙に見えます...誰かが私が間違ったことを知っていますか?

スクリーン ショットはDesignerから取得したものですが、プログラムを実行するとまったく同じ問題が発生することに注意してください。

敬具、

アントワーヌ・レンニュイ。

4

1 に答える 1