アプリケーションからの出力として機能するqmlがあります(読み取り専用コンソールのようなものです)。ただし、情報を出力するときにスクロールして一番上に戻るため、使用するのが面倒です。
たとえば、TextArea
1 秒ごとに 1 行を印刷するとします。1 分ほどすると、スクロール バーが表示されるのに十分な数の行が表示されます。一番下までスクロールすると、1 秒後にテキスト行が印刷され、一番上にスクロールして戻ります。
私が望む望ましい機能は、ユーザーが上にスクロールしてこれをオーバーライドしない限り、自動的に下にスクロールすることです (コンソールが出力するときのように)。それが理にかなっていることを願っています。ここにいくつかのコードがあります:
ScrollArea {
id: helpTextScrollArea
anchors.left: parent.left
anchors.right: parent.right
anchors.top: myButton.bottom
anchors.topMargin: 5
anchors.bottom: parent.bottom
visible: false
horizontalScrollBar.visible: false
onVisibleChanged: {
helpText.visible = visible
}
HelpTextArea {
id: helpText
width: parent.parent.width - helpTextScrollArea.verticalScrollBar.width
text: "Oops, no documentation."
onVisibleChanged: {
if(helpTextScrollArea.visible != visible) {
helpTextScrollArea.visible = visible
}
}
}
}
Flickable
{
id: flick
anchors.left: parent.left
anchors.right: parent.right
anchors.top: runStopButton.bottom
anchors.bottom: parent.bottom
anchors.topMargin: 5
TextArea{
id: messageArea
anchors.fill: parent
focus: true
readOnly: true
visible: !helpTextScrollArea.visible
wrapMode: TextEdit.Wrap
function addText(newText) {
text += newText + "\n"
}
}
}
注: 私の Flickable は何もしないと思います。これは、問題を解決するための実験の一部でした。また、関数を使用addText
してテキスト領域に印刷します。私はqmlについてほとんど何も知りません.このコードのほとんどは他の誰かによって書かれたものであり、私はそれを使用しようとしています. ありがとうございました!