海盗湾的Wordpress安装/搜索引擎优化培训免费咨询
Qt技术交流群现已开通,QQ搜索群号“765444821"即可加入
Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。
下载Qt6最新试用版
Qt组件推荐:
- QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
- QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面
该示例展示了如何创建您自己的自定义缩放效果。如何使用QRubberBand使用鼠标创建您自己的自定义缩放效果,以及如何使用触摸手势进行平移和缩放。
运行示例
要从Qt Creator运行示例,请打开欢迎模式并从示例中选择示例。有关更多信息,请访问构建和运行示例。
自定义缩放效果
让我们首先使用一些示例数据创建一个线系列。
QLineSeries *series = new QLineSeries();for (int i = 0; i < 500; i++) {QPointF p((qreal) i, qSin(M_PI / 50 * i) * 100);p.ry() += QRandomGenerator::global()->bounded(20);*series << p;}
然后我们通过从QChartView派生来创建自定义图表视图:
class ChartView : public QChartView
我们覆盖鼠标和按键事件处理
protected:bool viewportEvent(QEvent *event);void mousePressEvent(QMouseEvent *event);void mouseMoveEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);void keyPressEvent(QKeyEvent *event);
然后我们为鼠标和按键事件实现自定义逻辑。例如,按“+”键将放大,按“-”键将缩小。
void ChartView::keyPressEvent(QKeyEvent *event) {switch (event->key()) {case Qt::Key_Plus:chart()->zoomIn();break;case Qt::Key_Minus:chart()->zoomOut();break;
我们还创建了自己的QChart:
class Chart : public QChart
我们可以在哪里处理手势:
bool Chart::sceneEvent(QEvent *event) {if (event->type() == QEvent::Gesture)return gestureEvent(static_cast<QGestureEvent *>(event));return QChart::event(event); }bool Chart::gestureEvent(QGestureEvent *event) {if (QGesture *gesture = event->gesture(Qt::PanGesture)) {QPanGesture *pan = static_cast<QPanGesture *>(gesture);QChart::scroll(-(pan->delta().x()), pan->delta().y());}if (QGesture *gesture = event->gesture(Qt::PinchGesture)) {QPinchGesture *pinch = static_cast<QPinchGesture *>(gesture);if (pinch->changeFlags() & QPinchGesture::ScaleFactorChanged)QChart::zoom(pinch->scaleFactor());}return true; }
请注意,您需要对QMainWindow和QChart调用grabGesture() 。
====================================================
Qt技术交流群现已开通,QQ搜索群号“765444821”或者扫描下方二维码即可加入