私はscrollbar
を使用してQTグラフをスクロールする必要があり、そのために、私はドラッグすることができRectangle
とMouseArea
を使用して独自のカスタムscrollbar
を作成しました。QMLチャートのScrolLeftとScrollRightメソッドを使用する方法
import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtCharts 2.0
Window {
id: window
width: 640
height: 480
visible: true
ChartView {
id: chartview
width: parent.width
height: 300
LineSeries {
name: "LineSeries"
axisX: ValueAxis {
min: 0
max: 100
tickCount: 12
labelFormat: "%.0f"
}
axisY: ValueAxis {
min: 0
max: 70
tickCount: 5
labelFormat: "%.0f"
}
XYPoint { x: 0; y: 0.0 }
XYPoint { x: 1.1; y: 3.2 }
XYPoint { x: 1.9; y: 2.4 }
XYPoint { x: 2.1; y: 2.1 }
XYPoint { x: 2.9; y: 2.6 }
XYPoint { x: 3.4; y: 2.3 }
XYPoint { x: 200.1; y: 3.1 }
}
}
/* Rectangle base for horizontal scroll bar */
Rectangle{
id:rectHorScrollBase
width:parent.width
height:parent.height * 0.10
anchors.top:chartview.bottom
anchors.topMargin: (parent.height * 0.01)
color:"transparent"
visible: true
/* Rectangle indicating scroll path*/
Rectangle {
id:rectHorScrollPath
width: parent.width
height: parent.height
anchors.left:parent.left
radius: 2
color: "lightblue"
}
/* Actual scroll rectaangle which will be dragged */
Rectangle {
id: rectHorScroll
property var prevX : 0
anchors.top : parent.top
width: 50
height: parent.height
color: "green"
/* Mouser area to drag the rectangle and to move Chart */
MouseArea {
id:mouseAreaHorScroll
anchors.fill: parent
drag.target: parent
drag.minimumX: 0
drag.maximumX: chartview.width - width
drag.axis: Drag.XAxis
onReleased: {
console.log("x in Released ===",rectHorScroll.x)
rectHorScroll.prevX = rectHorScroll.x
}
}
onXChanged: {
// HOW TO HANDLE THE SCROLL BASED ON x ?
if(mouseAreaHorScroll.drag.active)
{
if(x > prevX)
{
chartview.scrollRight(x) // NOT WORKING
}
else
{
chartview.scrollLeft(x) //NOT WORKING
}
}
}
}
}
}
1)どのようにマップするには:私は/ ChartView
コンテンツX.FollowingとScrollBar
X
を結合し、私がリンクすることはできませんよScrollRight
とScrollLeft
メソッドを使用してチャートをスクロールしようとした
コードですscrollBar X
とChartView
の内容X
?
2)scrollbar
は、X軸の最大値と最小値を超えてはいけません。どうやってするか?
3)ScrollBar
とChartView
の間に同期がある必要があります。
こんにちは@derM両方のソリューションは完璧に動作します。データがリアルタイムで生成された場合、グラフを移動する方法をお勧めしますか?私は私の質問を更新して確認してください。 – pra7
ええと...後でそのチャートのことを調べる必要があります。私はまだそれを使用していない。チャートが進化するにつれて、最小値と最大値xを見つける必要があります。新しい質問をすることができますか?私は今は分かりませんが、あなたのアップデートは1つの質問の範囲を超えており、他人とは別個に関連している可能性があります。 ofc。多分それは本当に簡単です。 – derM
新しい質問として投稿します。ソリューションをありがとう、それは私にリアルタイムで実装するための新しいアイデアをくれました。 – pra7