日韩性视频-久久久蜜桃-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中视图的缩放对应缩略图中矩形框的缩放的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 蜜臀久久99精品久久久 | 亚洲av无码乱码在线观看性色 | 亚洲jizzjizz日本少妇 | 成人av网页| 国产精品成人一区二区 | 香蕉网在线 | www在线观看国产 | 伊人av在线 | 欧美三级a做爰在线观看 | 怡红院成人在线 | 人妖ts福利视频一二三区 | 国内av网站 | 91嫩草欧美久久久九九九 | 亚洲精品亚洲 | av一级在线观看 | 永久免费看片在线观看 | 中文字幕av影院 | 人人射av| 美日韩一级 | 精品久久久久久久久久久久久久久久久 | 亚洲啊v在线 | 久久久久麻豆v国产精华液好用吗 | 久久综合色鬼 | 日韩激情小说 | 精品视频亚洲 | 亚洲成人日韩在线 | 亚洲成人av电影 | 欧美日韩成人一区二区 | 国产一级大片 | 老版k8经典电影 | 精品少妇theporn | 欧美激情18p | 日韩视频精品在线 | 日本天堂在线播放 | 一级国产黄色片 | 天天爱夜夜操 | 欧美a√| 精品视频在线观看免费 | 亚洲av无码一区东京热久久 | www.夜色| 欧美色图亚洲视频 | 12av在线| 操韩国美女 | 91官网在线 | 一区二区三区视频在线 | 麻豆changesxxx国产| 日韩激情小视频 | 91网站在线观看视频 | 在线激情视频 | 草的我好爽 | 中文字幕精品久久久久人妻红杏1 | 国产第一精品 | 老色鬼在线 | 内射后入在线观看一区 | 午夜视频入口 | 五月天丁香视频 | 亚洲av成人一区二区国产精品 | 中文字幕一区2区3区 | 色综合天天综合网国产成人网 | 日日操夜夜 | 午夜精品视频一区二区三区在线看 | 日本精品在线一区 | 午夜精品久久99蜜桃的功能介绍 | av福利在线看 | 都市激情校园春色亚洲 | 免费视频www在线观看网站 | 黄色avv | 噼里啪啦国语版在线观看 | 久草视频在线资源站 | 国产在线免费观看 | 国产极品在线播放 | 99精品人妻国产毛片 | 亚洲国产成人精品一区二区三区 | 淫综合网 | www.人人干| 在线观看免费 | 男人天堂av电影 | 欧洲成人午夜精品无码区久久 | 俺也去网站 | 成人高清在线观看 | 黄色在线播放视频 | 精品久久国产视频 | 999视频在线播放 | 国产91丝袜 | 狠狠干2020| 进去里片欧美 | 欧美特黄aaaaaa | 亚洲在线观看av | 亚洲伦理在线播放 | 在线免费观看黄 | 欧美亚一区二区三区 | 色诱久久av | 亚洲素人在线 | 国产乱国产乱老熟 | 日本打白嫩屁股视频 | 国产成人毛毛毛片 | 在线观看波多野结衣 | 色呦呦官网| 天堂一区二区三区 |