줌 라인 예제
이 예제는 사용자 정의 확대/축소 효과를 만드는 방법을 보여줍니다.
이 예제에서는 마우스를 사용하여 QRubberBand 로 사용자 지정 확대/축소 효과를 만드는 방법과, 터치 제스처를 사용하여 화면을 이동하고 확대/축소하는 방법을 보여줍니다.


예제 실행
다음 위치에서 예제를 실행할 수 있습니다.
- Qt Creator
Welcome 모드를 열고 Examples 에서 예제를 선택합니다. 자세한 내용은 Qt Creator: 튜토리얼: 빌드 및 실행을 참조하십시오.
- Qt Extension for Visual Studio Code
Command Palette 에서 Qt: Open Qt examples 명령을 실행하고 목록에서 예제를 선택합니다. 자세한 내용은 Qt Extension for Visual Studio Code: 튜토리얼: 빌드 및 실행을 참조하십시오.
확대/축소 효과 사용자 지정
먼저 예제 데이터를 사용하여 선형 시리즈를 만들어 보겠습니다.
auto 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)) {
auto pan = static_cast<QPanGesture *>(gesture);
QChart::scroll(-(pan->delta().x()), pan->delta().y());
}
if (QGesture *gesture = event->gesture(Qt::PinchGesture)) {
auto pinch = static_cast<QPinchGesture *>(gesture);
if (pinch->changeFlags() & QPinchGesture::ScaleFactorChanged)
QChart::zoom(pinch->scaleFactor());
}
return true;
}QMainWindow 와 QChart 모두에서 grabGesture()를 호출해야 한다는 점에 유의하십시오.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.