最近要在PyQt5的框架下实现双击图片后图片全屏放大,这里就需要先知道我要全屏显示的是控件里的图片而不是窗口,而要调用的showfullscreen方法则是只对最顶级的窗口起作用,所以首先要做的就是将插入图片的控件(grahicsView)置为顶层:
self.setWindowFlags(Qt.Window)#设置为顶层
self.showFullScreen() #全屏显示
恢复时窗口大小恢复原样:
self.setWindowFlags(Qt.SubWindow) #将其重新设置为子窗口
self.setGeometry(QtCore.QRect(40,82,500,600)) #将graphicsView恢复到原本大小
self.showNormal() #恢复原样
self.fitInView() #将graphicsView里的图片也恢复原样
需要注意的是这里的双击事件是在我重构的graphics View类里进行的,因为如果在主窗口QWidget类里重写鼠标双击事件的话那么作用的对象就是整个窗口,这点希望注意。
我利用自己构建的graphicsView类在窗口界面建立grahicsView控件,界面如下:
基本代码如下:
import sys
from PyQt5 import QtCore
from PyQt5 import QtWidgets
from PyQt5 import QtGui
import cv2
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from graphicsView02 import GraphicsView
class View(QWidget):
def __init__(self):
super(View,self).__init__()
self.setWindowTitle('GraphicsView')
self.resize(800,800)
self.pushButton = QPushButton(self)
self.pushButton2 = QPushButton(self)
self.pushButton.setText('打开图片')
self.pushButton2.setText('删除图片')
self.pushButton.setGeometry(30,50,80,30)
self.pushButton3 = QPushButton(self)
self.pushButton3.setGeometry(QtCore.QRect(110,50,80,30))
self.pushButton3.setText('启用画图')
self.graphicsView = GraphicsView(self) #实例化graphicsView对象
# self.graphicsView.resize(500,600)
self.graphicsView.setGeometry(QtCore.QRect(40,82,500,600))
# self.graphicsView.setLayout(Layout)
self.pushButton3.clicked.connect(self.graphicsView.addLine)
self.Sub = None
self.initUi()
def initUi(self):
# self.setCentralWidget(self.graphicsView)
# self.scene = QGraphicsScene(self) #初始化graphicsView对象
# self.graphicsView.setScene(self.scene)
self.pushButton.clicked.connect(self.on_pushButton_clicked)
self.pushButton2.clicked.connect(self.clear_img)
# self.pushButton3.clicked.connect(self.graphicsView)
self.graphicsView.setObjectName("graphicsView")
self.graphicsView.setDragMode(QGraphicsView.NoDrag)
# self.graphicsView.setDragMode(QGraphicsView.ScrollHandDrag) #设置其可以拖动
self.graphicsView.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) #隐藏滑动条
self.graphicsView.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) #隐藏滑动条
以上代码构建了窗口界面的基本部件,剩下便是其他功能的实现。
个人关键便是图片的插入和转化,相关内容可以看我的其他内容:
https://mp.csdn.net/mp_blog/creation/editor/118697976(graphicsVIew图片的缩放和拖拽)
https://mp.csdn.net/mp_blog/creation/editor/119143266(多个label内图片的全屏显示)