我有一个在QT Designer中设计的主窗口。除此之外,它还有一个带有标签的滚动区域,用于显示图像。我想替换默认的鼠标滚轮处理程序,它使用我自己的缩放图像而不是缩放图像。如果我将wheelEvent事件添加到继承了已编译的qt设计器文件(Ui_MainWindow)中的主窗口类的类中,则无论鼠标指针位于何处以及哪个窗口小部件处于活动状态,它都会缩放图像。更多的滚动区域在处理我自己的缩放处理程序之前保持处理wheel事件。我不太确定如何替换标准的wheelevent事件处理程序,以便只有当scrollarea处于活动状态时才进行缩放?我知道如何做到这一点如果我自己编写GUI,但使用QT Designer我不应该触及GUI的编译版本。 下面是处理缩放的代码片段。如果没有QT Designer编译代码,它将无法工作......
from MainWindow import Ui_MainWindow
if __name__ == "__main__":
class CCDInspectorMainWindow(QMainWindow, Ui_MainWindow):
ImageWidth=0
ImageHeight=0
zoom=1.0
def __init__(self, parent = None):
super(CCDInspectorMainWindow, self).__init__(parent)
self.setupUi(self)
QObject.connect(self.actionOpen_File, SIGNAL("triggered()"), self.openDialog)
self.imageMap=QImage(0,0,QImage.Format_RGB888)
def openDialog(self):
fileObj=QFileDialog.getOpenFileName(self,"Open image", filter="All Image Files (*.png *.xpm *.jpg *.tif *.fit *.fits *.cr*)")
self.imageMap=QImage(fileObj)
self.ImageWidth=self.imageMap.width()
self.ImageHeight=self.imageMap.height()
self.updateImages()
def wheelEvent(self,event):
self.zoom = self.zoom+event.delta() / 1200.0
if self.zoom<0:
self.zoom=0
self.updateImages()
def updateImages(self):
self.setOriginalImage()
self.setSplitImage()
def setOriginalImage(self):
self.OriginalImage.setPixmap(QPixmap.fromImage(self.imageMap.scaled(int(self.ImageWidth*self.zoom),int(self.ImageHeight*self.zoom),aspectRatioMode=Qt.IgnoreAspectRatio, transformMode=Qt.FastTransformation)))