改写linux窗口程序设计的Qt例子(4)
来源:互联网 发布:李小龙英雄再现 源码 编辑:程序博客网 时间:2024/05/02 01:58
首先声明,如果转载请声明作者以及来源
第三十五例:SVG格式图片的显示
__author__ = '375159507@qq.com'try: from PySide import QtGui from PySide import QtCore from PySide import QtSvg from PySide import QtXmlexcept ImportError: from PyQt4 import QtGui from PyQt4 import QtCore from PyQt4 import QtSvg from PyQt4 import QtXmlclass SvgWidget(QtSvg.QSvgWidget): def __init__(self): super(SvgWidget,self).__init__() self.render = self.renderer() self.mousePresPos = QtCore.QPoint(0,0) self.newPos = QtCore.QPoint(20,20) def wheelEvent(self, e): self.diff = 0.1 self.size = QtCore.QSize() self.size = self.render.defaultSize() self.mywidth = self.size.width() self.myheight = self.size.height() if e.delta() > 0: self.mywidth = self.width() + self.width()*self.diff self.myheight = self.height() + self.height()*self.diff else: self.mywidth = self.width() - self.width()*self.diff self.myheight = self.height() - self.height()*self.diff self.resize(self.mywidth,self.myheight)class SvgWindonw(QtGui.QScrollArea): def __init__(self): super(SvgWindonw,self).__init__() self.svgwidget = SvgWidget() self.setWidget(self.svgwidget) self.OK = False def setFile(self,filename): self.svgwidget.load(filename[0]) self.myrender = self.svgwidget.renderer() self.svgwidget.resize(self.myrender.defaultSize()) self.OK = True def mousePressEvent(self, e): if self.OK: self.mousePresPos = e.pos() self.svgwidget.newPos.setX(self.horizontalScrollBar().value()) self.svgwidget.newPos.setY(self.verticalScrollBar().value()) e.accept() else: return def mouseMoveEvent(self, e): if self.OK: self.horizontalScrollBar().setValue(self.svgwidget.newPos.x()-(self.mousePresPos.x() - e.pos().x())) self.verticalScrollBar().setValue(self.svgwidget.newPos.y() - (self.mousePresPos.y() - e.pos().y())) self.horizontalScrollBar().update() self.verticalScrollBar().update() e.accept() else: returnclass MainWindow(QtGui.QMainWindow): def __init__(self): super(MainWindow,self).__init__() self.setWindowTitle("图片浏览器") self.svgwindow = SvgWindonw() self.createbutton() self.setCentralWidget(self.svgwindow) def slotopenfile(self): filename = QtGui.QFileDialog.getOpenFileName(self,"打开文件","/","svg files(*.svg)") if filename : self.svgwindow.setFile(filename) else: return def createbutton(self): mymenu = QtGui.QMenu("文件") myaction = QtGui.QAction("打开",self) myaction.triggered.connect(self.slotopenfile) mymenu.addAction(myaction) mainmenu = self.menuBar() mainmenu.addMenu(mymenu) self.setMenuBar(mainmenu)if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) mainwindow = MainWindow() mainwindow.show() sys.exit(app.exec_())SVG图片,请大家保存文件,后缀名为.svg
<?xml version="1.0"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="467" height="462"> <!-- This is the red square: --> <rect x="80" y="60" width="250" height="250" rx="20" fill="red" stroke="black" stroke-width="2px" /> <!-- This is the blue square: --> <rect x="140" y="120" width="250" height="250" rx="40" fill="blue" stroke="black" stroke-width="2px" fill-opacity="0.7" /></svg>程序运行效果图
- 改写linux窗口程序设计的Qt例子
- 改写linux窗口程序设计的Qt例子(4)
- 改写linux窗口程序设计的Qt例子(2)
- 改写linux窗口程序设计的Qt例子(3)
- 改写linux窗口程序设计的Qt例子(5)
- 改写linux窗口程序设计的Qt例子(6)
- 改写linux窗口程序设计的Qt例子(7)
- netfilter例子改写4
- QT 主窗口程序设计
- 改写spring的例子petclinic
- 改写书上过期的例子
- 用python3+PyQt5改写Python Qt GUI快速编程的第6章实例主窗口
- Qt libqevdevtouchplugin.so插件的改写
- Linux程序设计(Linux shell编程的例子:倒计时程序)
- Linux程序设计(Linux shell编程的例子:选择菜单)
- Linux程序设计(Linux shell编程的例子:总结)
- qt creator在原窗口基础上新建窗口,inpaint例子的修改
- Qt下使用OpenGL(4)-根据NeHe的教程改写的
- 百度Geocoding接口(可用于地理编码和逆地理编码)
- loadrunner 脚本录制问题之 ie
- MFC分割窗口防止用户改变窗格的大小
- tar、zip 、unzip 打包与压缩
- java 从零开始,学习笔记之基础入门<线程及实例分析>(十九)
- 改写linux窗口程序设计的Qt例子(4)
- android图像处理系列之六--给图片添加边框(下)-图片叠加
- CDC,CClientDC,CPaintDC,CWindowDC 比较区别
- linux 多次创建不同的UDP socket进行通信,最终通信用的UDP 源端口以最后一次创建的socket使用的源端口为准
- CSS3 Box-sizing
- android 应用程序的目录结构
- android图片特效处理之怀旧效果
- Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
- 机器视觉开源处理库汇总