モジュール
QtQuick 2.0
クラス継承
QQuickRectangle → QQuickItem → QObject
プロパティー
color: color = "#ffffffff"
border: QQuickPen* = QQuickPen(this) readonly constant
color: color = "#ff000000"
pixelAligned: bool = true
width: real = 1
gradient: Gradient = null
radius: real = 0
シグナル
void border.penChanged()
void colorChanged()
void radiusChanged()
説明
antialiasing を設定していない場合に radius を 0 以外に設定すると antialiasing が true になり、アンチエイリアスが自動的に有効になります。
border は読み込み専用で通知シグナルはありません。代わりに border.penChanged() シグナルがあり以下のようにして使います。
border.qml:
import QtQuick 2.10
import QtQuick.Window 2.10
Window {
visible: true
width: 400; height: 400
color: "lightgrey"
Rectangle {
id: rect
width: 200; height: 200
anchors.centerIn: parent
border {
color: "black"
width: 3
onPenChanged: {
print("Pen is changed");
}
}
color: "red"
}
MouseArea {
anchors.fill: parent
onClicked: {
if (Qt.colorEqual(rect.border.color, "black")) {
rect.border.color = "green";
} else {
rect.border.color = "black";
}
}
}
}
プロパティーの説明
color: color
border: QQuickPen*
border.color: color
border.pixelAligned: bool
border.width: real
縁の幅。border.pixelAligned が true の場合に、小数点以下で四捨五入した整数値が縁の幅になります。これがデフォルト動作です。
gradient: Gradient
radius: real
シグナルの説明
void border.penChanged()
border.color、border.pixelAligned、border.width のいずれかが変更されると送信される通知シグナル。注意
border.width と border.color のデフォルト値はそれぞれ 1 と黒色ですが明示的に設定しないと縁は描画されません。border.width が 0 かどうかで縁の有無を判定する場合には border のプロパティーに初期値を設定する必要があります。
問題
Rectangle のリファレンスで、border.width の型が int になっているのは間違いで、real が正しい型です。int ならば浮動小数点数を設定すると小数点以下が切り捨てられて渡りますが、実際には浮動小数点数が渡り、内部で小数点以下で四捨五入しています。
Rectangle のリファレンスで、プロパティーに antialiasing が入っていますが、オーバーライドされてないので Rectangle のプロパティーではなく Item のプロパティーです。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。