翻譯|使用教程|編輯:鮑佳佳|2021-06-07 10:05:47.423|閱讀 93 次
概述:該示例展示了如何創(chuàng)建您自己的自定義縮放效果。如何使用QRubberBand使用鼠標(biāo)創(chuàng)建您自己的自定義縮放效果,以及如何使用觸摸手勢(shì)進(jìn)行平移和縮放。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Qt是一個(gè)跨平臺(tái)框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中非常有用。而且它也可以在三種主要的臺(tái)式機(jī)操作系統(tǒng)以及移動(dòng)操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運(yùn)行。現(xiàn)在我們?yōu)槟闾峁┝嗣赓M(fèi)的試用版。
Qt組件推薦:
該示例展示了如何創(chuàng)建您自己的自定義縮放效果。如何使用QRubberBand使用鼠標(biāo)創(chuàng)建您自己的自定義縮放效果,以及如何使用觸摸手勢(shì)進(jìn)行平移和縮放。
要從Qt Creator運(yùn)行示例,請(qǐng)打開歡迎模式并從示例中選擇示例。有關(guān)更多信息,請(qǐng)?jiān)L問構(gòu)建和運(yùn)行示例。
讓我們首先使用一些示例數(shù)據(jù)創(chuàng)建一個(gè)線系列。
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派生來創(chuàng)建自定義圖表視圖:
class ChartView : public QChartView
我們覆蓋鼠標(biāo)和按鍵事件處理
protected: bool viewportEvent(QEvent *event); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void keyPressEvent(QKeyEvent *event);
然后我們?yōu)槭髽?biāo)和按鍵事件實(shí)現(xiàn)自定義邏輯。例如,按“+”鍵將放大,按“-”鍵將縮小。
void ChartView::keyPressEvent(QKeyEvent *event) { switch (event->key()) { case Qt::Key_Plus: chart()->zoomIn(); break; case Qt::Key_Minus: chart()->zoomOut(); break;
我們還創(chuàng)建了自己的QChart:
class Chart : public QChart
我們可以在哪里處理手勢(shì):
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; }
請(qǐng)注意,您需要對(duì)QMainWindow和QChart調(diào)用grabGesture() 。
====================================================
想要了解或購(gòu)買Qt正版授權(quán)的朋友,歡迎
Qt技術(shù)交流群現(xiàn)已開通,QQ搜索群號(hào)“765444821”或者掃描下方二維碼即可加入
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: