日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt中视图的缩放对应缩略图中矩形框的缩放

發布時間:2024/9/27 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt中视图的缩放对应缩略图中矩形框的缩放 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實現的目的是:視圖縮放時,縮略圖中的矩形框也進行縮放,而縮略圖中的矩形區域為視圖中的可見區。
獲取視圖中滾動條的值,將其值與縮略圖所在的小窗口對比,可通過繪圖求其比例,再按比例縮小。
首先提供主要的代碼:

connect(view->verticalScrollBar(),&QScrollBar::valueChanged,this,&chunzhongForm::slot_VvalueChanged); connect(view->horizontalScrollBar(),&QScrollBar::valueChanged,this,&chunzhongForm::slot_HvalueChanged);void chunzhongForm::slot_VvalueChanged(int value) {if(value != 0 && dlg != NULL){m_y = value;if(dlg->isVisible()){emit signalSetDrawRectSize();}} }void chunzhongForm::slot_HvalueChanged(int value) {if(value != 0 && dlg != NULL){m_x = value;if(dlg->isVisible()){emit signalSetDrawRectSize();}} }connect(this,&chunzhongForm::signalSetDrawRectSize,this,&chunzhongForm::slot_setViewRect);QSize GraphicsView::viewportSizeHint() {return viewport()->size(); }void chunzhongForm::slot_setViewRect() {m_viewSize = view->viewportSizeHint();//獲取視口大小int x = m_x / (m_viewSize.width() * m_scale)* SMALL_W;int y = m_y / (m_viewSize.height() * m_scale)* SMALL_H;int wid = SMALL_W / m_scale;int hei = SMALL_H / m_scale;outPut<<"小矩形坐標及大小:"<<"("<<m_x<<" ,"<<m_y<<" ,"<<wid<<" ,"<<hei<<")";//換成qDebug()輸出QRect rect(x,y,wid,hei);emit signalDrawRect(rect); } connect(this,&chunzhongForm::signalDrawRect,dlg,&BreviaryDlg::slot_setRectSize);//縮略圖窗口類BreviaryDlg void BreviaryDlg::slot_setRectSize(QRect &rect) {m_rect = rect;scene->onSetPreviewRect(rect); }//縮略圖中的自定義場景 void MyGraphicsScene::onSetPreviewRect(QRect rect) {m_rectSaved = rect;// 內縮幾個像素,用矩形外邊框來標示viewport顯示區域m_pRectItem->setRect(rect.x() - 2/*+ 5*/, rect.y() - 2/*+ 5*/, rect.width() - 4, rect.height() - 4);//設置圖形項矩形 }

下面貼出自定義場景類
MyGraphicsScene.h

#pragma once//#include <vld.h> #include <QGraphicsScene>class MyGraphicsScene : public QGraphicsScene {Q_OBJECTpublic:MyGraphicsScene(QObject *parent = nullptr);virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);Q_SIGNALS:void previewRectMoved(QRect rect);public Q_SLOTS:void onSetPreviewRect(QRect rect);private:QGraphicsRectItem* m_pRectItem;QRect m_rectSaved;bool m_bRectClicked;QPoint m_ptRectRelated; // 鼠標點擊時,相對于紅色矩形框的位置 };

MyGraphicsScene.cpp

#include "MyGraphicsScene.h" #include <QGraphicsSceneMouseEvent> #include <QGraphicsRectItem> #include <QDebug>MyGraphicsScene::MyGraphicsScene(QObject *parent): QGraphicsScene(parent), m_bRectClicked(false) {m_pRectItem = new QGraphicsRectItem(0, 0, 0, 0);QPen penRectItem = QPen(QColor(255, 0, 0));penRectItem.setWidth(2);m_pRectItem->setPen(penRectItem);m_pRectItem->setZValue(1);addItem(m_pRectItem); }void MyGraphicsScene::onSetPreviewRect(QRect rect) {m_rectSaved = rect;// 內縮幾個像素,用矩形外邊框來標示viewport顯示區域m_pRectItem->setRect(rect.x() - 2/*+ 5*/, rect.y() - 2/*+ 5*/, rect.width() - 4, rect.height() - 4); }void MyGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) {QGraphicsScene::mouseMoveEvent(mouseEvent);if (m_bRectClicked) {QPoint ptTopLeft = mouseEvent->scenePos().toPoint() - m_ptRectRelated;m_rectSaved.setTopLeft(ptTopLeft); // qDebug()<<"mouseMoveEvent";emit previewRectMoved(m_rectSaved);} }void MyGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) {QGraphicsScene::mousePressEvent(mouseEvent);if (m_rectSaved.contains(mouseEvent->scenePos().x(), mouseEvent->scenePos().y())) {m_bRectClicked = true;m_ptRectRelated = mouseEvent->scenePos().toPoint() - m_rectSaved.topLeft();} }void MyGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) {QGraphicsScene::mouseReleaseEvent(mouseEvent);m_bRectClicked = false; }

總結

以上是生活随笔為你收集整理的Qt中视图的缩放对应缩略图中矩形框的缩放的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本一区二区视频在线 | 亚洲青色在线 | 亚洲精品理论 | 黄色一极片 | 久久精品高清视频 | 人人插人人射 | 毛片在线视频播放 | 性欧美在线视频观看 | 欧美成人aa | 香蕉人人精品 | 亚洲欧美日韩精品在线观看 | 色人天堂 | 91在线一区 | 一级片在线视频 | 日韩欧美高清在线 | 黄色xxxx| 欧美日韩成人在线视频 | gav成人| 可以免费看的av | 韩国三级hd中文字幕有哪些 | 黄色小说视频网站 | 日本不卡一区二区三区视频 | 相亲对象是问题学生动漫免费观看 | 91精品国产一区二区无码 | 亚洲乱码视频在线观看 | 亚洲av无码久久精品狠狠爱浪潮 | 越南毛茸茸的少妇 | 国产成人精品女人久久久 | 免费看污片网站 | 五月丁香久久婷婷 | 免费看一级黄色大片 | 欧美日韩国产在线 | 亚洲av无码一区二区三区人 | jizz成熟丰满日本少妇 | 久久中字 | 99精品欧美| 久久久久中文字幕亚洲精品 | 911香蕉| 91pao| 免费污片软件 | 综合狠狠 | h小视频在线观看 | 欧美一线高本道 | 日韩欧美一区二区在线 | 黄色综合网站 | 国产精品视频免费播放 | 在线观看小视频 | 国产女人水真多18毛片18精品 | 免费在线黄色网址 | 国产99视频在线观看 | 四虎国产| 高清无打码 | 国产精品久久久久久久久久辛辛 | 久久成人免费视频 | 久久免费片| av男人的天堂在线观看 | 日韩久操 | 野花视频在线观看免费 | 色播在线观看 | 国产性―交―乱―色―情人 | 日日爽日日操 | 精品久久久久成人码免费动漫 | 欧美日韩精品电影 | 本道综合精品 | 日本高清视频在线播放 | 欧美77777| 色妞色| 大尺度做爰啪啪床戏 | 亚洲性猛交 | 久久不卡视频 | 日韩乱淫| 2024男人天堂| 波多野结衣 久久 | 国产精品久久毛片 | 精品久久国产视频 | 播放毛片 | 日韩久久av | 不卡av一区二区 | 欧美日韩五区 | 人与禽性7777777 | 国产草草| 久久国产精品电影 | 久久97久久97精品免视看 | 国产精品久久久久久久久动漫 | 国产三级一区二区 | 91一区二区| 亚洲色图另类图片 | 久草成人 | 国产伦精品一区二区三区妓女 | 成人aaaaa| 亚洲免费观看高清在线观看 | 国产精品白虎 | 欧美午夜精品久久久久久孕妇 | 欧美偷拍精品 | 亚洲精品在线视频免费观看 | 欧美日韩亚洲在线观看 | 黑帮大佬和我的365日第二部 | www.96av| 天海翼视频在线观看 |