アプリの 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から取得したものですが、プログラムを実行するとまったく同じ問題が発生することに注意してください。
敬具、
アントワーヌ・レンニュイ。