- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 QML 中声明的 ChartView 项,我需要类似橡皮筋的缩放功能。这可以通过半透明矩形和 MouseArea 项目来实现。问题是对于一个矩形,它只能选择从左上角到右下角的区域,因为带有负 dim-s 的矩形项目是不可见的或被禁用的。尽管可以将变换应用于矩形
transform: Scale { origin.x: 0; origin.y: 0; xScale: -1}
我没能找到如何从外部操作 xScale/yScale 属性。
现在我画了 4 个矩形,每个象限一个,具有正确的 xScale/yScale 和 dims(最后的代码)。
所以我想知道是否有更优雅/更简单的解决方案来解决这个问题?
ChartView {
id: chartViewTop
...
Rectangle{
id: rubberBandRec1
border.color: "black"
border.width: 1
opacity: 0.3
visible: false
transform: Scale { origin.x: 0; origin.y: 0; yScale: -1}
}
Rectangle{
id: rubberBandRec2
border.color: "black"
border.width: 1
opacity: 0.3
visible: false
transform: Scale { origin.x: 0; origin.y: 0; yScale: -1; xScale: -1}
}
Rectangle{
id: rubberBandRec3
border.color: "black"
border.width: 1
opacity: 0.3
visible: false
transform: Scale { origin.x: 0; origin.y: 0; xScale: -1}
}
Rectangle{
id: rubberBandRec4
border.color: "black"
border.width: 1
opacity: 0.3
visible: false
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onPressed: {
rubberBandRec1.x = mouseX; rubberBandRec1.y = mouseY; rubberBandRec1.visible = true;
rubberBandRec2.x = mouseX; rubberBandRec2.y = mouseY; rubberBandRec2.visible = true;
rubberBandRec3.x = mouseX; rubberBandRec3.y = mouseY; rubberBandRec3.visible = true;
rubberBandRec4.x = mouseX; rubberBandRec4.y = mouseY; rubberBandRec4.visible = true;
}
onMouseXChanged: {
rubberBandRec1.width = mouseX - rubberBandRec1.x;
rubberBandRec2.width = rubberBandRec2.x-mouseX;
rubberBandRec3.width = rubberBandRec3.x-mouseX;
rubberBandRec4.width = mouseX - rubberBandRec4.x;
}
onMouseYChanged: {
rubberBandRec1.height = rubberBandRec1.y - mouseY;
rubberBandRec2.height = rubberBandRec2.y - mouseY;
rubberBandRec3.height = mouseY - rubberBandRec3.y;
rubberBandRec4.height = mouseY - rubberBandRec4.y;
}
onReleased: {
var x = rubberBandRec4.x-(rubberBandRec4.width<0)*Math.abs(rubberBandRec4.width);
var y = rubberBandRec4.y-(rubberBandRec4.height<0)*Math.abs(rubberBandRec4.height);
if (Math.abs(rubberBandRec4.width*rubberBandRec4.height)>100)
chartViewTop.zoomIn(Qt.rect(x, y, Math.abs(rubberBandRec4.width),
Math.abs(rubberBandRec4.height)));
rubberBandRec1.visible = false;
rubberBandRec2.visible = false;
rubberBandRec3.visible = false;
rubberBandRec4.visible = false;
}
}
}
最佳答案
设置缩放的外部属性,然后只需在 onMouseXChanged 和 onMouseYChanged 事件中更改这些属性,如下所示。这似乎对我有用:
property int xScaleZoom: 0
property int yScaleZoom: 0
Rectangle{
id: recZoom
border.color: "steelblue"
border.width: 1
color: "steelblue"
opacity: 0.3
visible: false
transform: Scale { origin.x: 0; origin.y: 0; xScale: xScaleZoom; yScale: yScaleZoom}
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onPressed: {
recZoom.x = mouseX;
recZoom.y = mouseY;
recZoom.visible = true;
}
onMouseXChanged: {
if (mouseX - recZoom.x >= 0) {
xScaleZoom = 1;
recZoom.width = mouseX - recZoom.x;
} else {
xScaleZoom = -1;
recZoom.width = recZoom.x - mouseX;
}
}
onMouseYChanged: {
if (mouseY - recZoom.y >= 0) {
yScaleZoom = 1;
recZoom.height = mouseY - recZoom.y;
} else {
yScaleZoom = -1;
recZoom.height = recZoom.y - mouseY;
}
}
onReleased: {
var x = (mouseX >= recZoom.x) ? recZoom.x : mouseX
var y = (mouseY >= recZoom.y) ? recZoom.y : mouseY
chartView.zoomIn(Qt.rect(x, y, recZoom.width, recZoom.height));
recZoom.visible = false;
}
}
关于qt - 通过 MouseArea 向 ChartView 添加橡皮筋缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979360/
我想放置一些矩形作为叠加层,以在 ScatterSeries 的 ChartView 上显示感兴趣的区域。然而,当我尝试这样做时,它显然使用了与 ScatterSeries 不同的坐标系,因为它是在一
QChart自定义背景画笔和绘图区画笔的官方示例代码:Custom chart example 如何使用 ChartView(Qml 类型)以 Qml 方式实现此目的? 我想像那个示例一样自定义 Qm
我最近开始使用 QML,我正在寻找一种方法来将数据从 C++ 提供到 QML 中的 ChartView。我更喜欢一个解决方案,我可以发送一个带有 Q_PROPERTY 之类的 QMap,以便它自动更新
我正在尝试使用条形图格式在 QLabel 小部件中绘制数据。创建图表后,我使用 chartView->grab() 捕获它以插入到 QLabel 中。这种方法适用于饼图,但对于条形图,不显示子元素(Q
我有一个在 QML 中声明的 ChartView 项,我需要类似橡皮筋的缩放功能。这可以通过半透明矩形和 MouseArea 项目来实现。问题是对于一个矩形,它只能选择从左上角到右下角的区域,因为带有
我正在尝试基于 qtcharts-qmloscilloscope-example here 制作类似 Qt Quick 应用程序的示波器 在此示例中,跟踪(QTQuick ChartView)在 QM
我有一个在 QML 中声明的 ChartView 项,我需要类似橡皮筋的缩放功能。这可以通过半透明矩形和 MouseArea 项目来实现。问题是对于一个矩形,它只能选择从左上角到右下角的区域,因为带有
我正在尝试获取对动态创建的 ChartView 对象的引用。在代码中,当我单击“添加图表”按钮时,您会看到我动态创建了一个图表作为委托(delegate)。 import QtQuick 2.12 i
我有一个由 QXYSeries 表示的散点图,并使用 Qt Charts 5.7 中的 ChartView 查看。 我想将鼠标悬停在绘图上,在一定距离内“悬停”触发,而不是仅当我的光标直接位于点上方时
我一直在关注this example尝试在 QDialog 窗口中创建折线图。而不是使用以下方法将图表添加到 UI: window.setCentralWidget(chartView); 我用这一行
我正在尝试调整 Qt5.9 QML Oscilloscope example从 C++ 推送图形数据而不是从 QML 请求图形数据。以下是 QML 示波器示例中的相关部分。 数据源.h: #ifnde
我的应用程序在 ViewPager 中有多个 Fragment。其中一个片段包含一个 ChartView,当用户滑动移动到相邻片段时,图表会重新绘制和压缩,而不是像预期的那样保持原始宽度。这也垂直发生
我有一个问题,当我在带有图表的 android 平板电脑 (android 7.0) 上启动调试时,我遇到了一个崩溃的应用程序。 所以我的 qt.pro: QT += qml quick core c
我有一个 QML 应用程序(通过属性、Q_INVOKABLE 等)链接到 C++ 代码。我可以使用 qmlscene 在没有大部分 C++ 框架的情况下启动 QML 应用程序,并且没有明显的问题(除了
我很难将 c++ 与 qml 和 QtCharts/Chartview 结合使用。如果有任何建议,我很乐意在这里提出! 问题:我想在QML中的Chartview中添加一个用c++定义的QLineSer
我正在尝试使用 python 将按需系列添加到在 qml 中定义的现有 ChartView。我找到了一个示例,展示了如何在 C++ 中执行此操作(取自 https://doc.qt.io/archiv
我的方法几乎是这样的: 图表.qml: Window { ChartView { id: chartView // ... } Button {
我正在使用图表库创建一些折线图,当没有可用数据时我希望清除图表。该图清除正常并显示其通常的“nodatatext”但是当我尝试再次设置图表时代码在设置数据的行上失败:fastestChartView.
我有一个自定义 QAbstractTableModel 和一个翻转第一个模型轴的代理模型。有了这个工作表,我只需切换模型。当我切换到图表的代理模型时,它会在我将行分配给 QHXYModelMapper
我想在 ChartView QML 对象中创建我自己的特定图表。我的期望是通过在 c++ 中指定例如 QCategoryAxis 而不是在 qml 中调用此函数来获得充分的灵 active 。 首先,
我是一名优秀的程序员,十分优秀!