当前位置: 首页 > wzjs >正文

智能模板网站建设价格合肥公司网站建设多少费用

智能模板网站建设价格,合肥公司网站建设多少费用,邢台网站建设要多少钱,佛山企业网最近学习了视图(QGraphicsView)的知识,总结一下,做一个demo以备忘。在demo中演示了常用的设置方法和信号槽传递机制。 QT的视图(QGraphicsView)体系是建立在场景(QGraphicsScene)基础…

        最近学习了视图(QGraphicsView)的知识,总结一下,做一个demo以备忘。在demo中演示了常用的设置方法和信号槽传递机制。

         QT的视图(QGraphicsView)体系是建立在场景(QGraphicsScene)基础上的,场景(QGraphicsScene)是图形项(QGraphicsItem)的容器,图形项(QGraphicsItem)最终呈现的显示元素。

基本的框架演示:

# 设置样本图片的QGraphicsView模型
from PySide6.QtCore import Qt, QRectF
from PySide6.QtGui import QPainter, QPen, QColor, QAction, QMouseEvent
from PySide6.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QGraphicsRectItem, QMenu, QWidget, \QVBoxLayout, QFrame, QSizePolicy# 设置矩形方框(QGraphicsRectItem)模型
class MyRectItem(QGraphicsRectItem):def __init__(self, temp_pen, normal_pen, *args):super().__init__(*args)self.temp_pen = temp_pen   # 临时画笔self.normal_pen = normal_pen   # 正常画笔# 启用鼠标跟踪,以便在没有按下鼠标按钮时也能接收鼠标移动事件self.setAcceptHoverEvents(True)def hoverEnterEvent(self, event: QMouseEvent):"""鼠标进入项的事件处理"""print("鼠标进入项")super().hoverEnterEvent(event)self.setPen(self.temp_pen)def hoverLeaveEvent(self, event: QMouseEvent):"""鼠标离开项的事件处理"""print("鼠标离开项")super().hoverLeaveEvent(event)self.setPen(self.normal_pen)# 设置QGraphicsView模型
class MyView(QGraphicsView):def __init__(self, parent=None, autoScale=True):super().__init__(parent)self.autoScale = autoScale  # 自动缩放标志,是否全画幅显示self.set_scene()   # 设置场景self.set_mouse()   # 设置鼠标self.set_flags()   # 设置标志self.set_menu()   # 设置菜单def set_scene(self):"""设置场景"""self.scene = QGraphicsScene()  # 创建窗口场景# 设置渲染提示self.setRenderHint(QPainter.Antialiasing)  # 开启抗锯齿self.setRenderHint(QPainter.SmoothPixmapTransform)  # 开启平滑缩放# 设置缩放锚点self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)  # 转换时以鼠标为中心self.setResizeAnchor(QGraphicsView.AnchorUnderMouse)  # 缩放时以鼠标为中心self.setScene(self.scene)  # 将场景应用到视窗中def set_mouse(self):"""设置鼠标"""self.setMouseTracking(True)  # 设置鼠标跟踪# 鼠标的实时位置(视窗坐标)self.view_x = 0self.view_y = 0# 鼠标的实时位置(场景坐标)self.scene_x = 0self.scene_y = 0# 鼠标按下时的位置(场景坐标)self.press_x = Noneself.press_y = None# 鼠标释放时的位置(场景坐标)self.release_x = 0self.release_y = 0# 处理滚轮事件以实现缩放def wheelEvent(self, event):"""处理滚轮事件以实现缩放"""factor = 1.001 ** event.angleDelta().y()  # 滚轮每滚动一格,缩放比例变化self.scale(factor, factor)def set_flags(self):"""设置标志"""passdef set_menu(self):"""设置菜单"""pass# 设置图像文件def set_image(self, pixmap):self.scene.clear()  # 清空场景self.scene_rect = QRectF(0, 0, pixmap.width(), pixmap.height())  # 设置场景范围self.image_item = QGraphicsPixmapItem(pixmap)  # 创建图片对象self.scene.addItem(self.image_item)  # 将图片对象添加到场景中self.setAlignment(Qt.AlignmentFlag.AlignCenter)  # 设置视图对齐方式if self.autoScale:self.fitInView(self.image_item, Qt.AspectRatioMode.KeepAspectRatio)  # 设置视图适应图片,全幅显示if __name__ == "__main__":import sysfrom PySide6.QtWidgets import QApplicationfrom PySide6.QtGui import QPixmapapp = QApplication(sys.argv)widget = QWidget()  # 创建窗口对象widget.resize(800, 600)  # 设置窗口大小widget.layout = QVBoxLayout(widget)  # 创建垂直布局对象widget.view = MyView(widget)  # 创建MyView对象widget.layout.addWidget(widget.view)  # 将视图添加到布局中pixmap = QPixmap("your/image/path")  # 创建QPixmap对象widget.show()  # 显示窗口widget.view.set_image(pixmap)  # 设置图像文件sys.exit(app.exec())  # 进入程序的主循环,并通过exit()函数确保主循环安全结束

 基本框架具备了图像显示和鼠标滚轮缩放的功能:

注意: 

widget.show()  # 显示窗口
widget.view.set_image(pixmap)  # 设置图像文件

        这两行代码的顺序一定不能反,如果将 widget.show() 放在widget.view.set_image(pixmap)后面,将会是下面的显示效果,初始化后不能全幅显示。

        这是因为 fitInView 方法的行为依赖于视图的实际大小,而在窗口尚未显示时,视图的大小可能是未确定的或者是默认值,从而导致 fitInView 无法正确计算和应用缩放,而show()函数执行之后就确定了视图的大小。


文章转载自:

http://1MfyCHu4.dpLmq.cn
http://b8aTLVHe.dpLmq.cn
http://FSE4VvOY.dpLmq.cn
http://20WUIEEg.dpLmq.cn
http://CMsuwhXq.dpLmq.cn
http://Zg5tCp2A.dpLmq.cn
http://tzz7QUUV.dpLmq.cn
http://qdH6Aj3W.dpLmq.cn
http://HHYvZX4F.dpLmq.cn
http://n9omj7mK.dpLmq.cn
http://Fj8NhKaS.dpLmq.cn
http://DPksY8cJ.dpLmq.cn
http://61Qexctd.dpLmq.cn
http://JDehf4BH.dpLmq.cn
http://tndbQzvk.dpLmq.cn
http://XZwr3ulB.dpLmq.cn
http://y1yksZIU.dpLmq.cn
http://2Y65q0S8.dpLmq.cn
http://9FODFVk7.dpLmq.cn
http://6JFVeLY8.dpLmq.cn
http://D5YpuIIh.dpLmq.cn
http://LvLTremy.dpLmq.cn
http://l56yylGy.dpLmq.cn
http://ktEBziwi.dpLmq.cn
http://xWmeWbAj.dpLmq.cn
http://sQoDQIcC.dpLmq.cn
http://wFrKhD2J.dpLmq.cn
http://TcwWNrMp.dpLmq.cn
http://LJX1YF9o.dpLmq.cn
http://wS5Kzz5E.dpLmq.cn
http://www.dtcms.com/wzjs/766249.html

相关文章:

  • 企业 网站 建设 规范加强公司网站建设及数据库的通知
  • 在网络上做兼职的网站wordpress 好用主题
  • 做字素的网站中文网址和中文域名
  • 深圳制作公司网站教育培训网站建设ppt
  • 本人想求做网站绍兴企业建站模板
  • 平面磨床东莞网站建设网站的ftp在哪里可以查到
  • 大型门户网站建设推广注册公司需要提供的资料及公司注册流程
  • 网站建设业务员培训参与网站建设与维护的要求
  • 九江做网站的公司哪里好如何做供求网站
  • 关于化妆品的网页设计专业网站优化电话
  • 用php做网站后台教育培训机构推荐
  • 洛阳做网站的公司哪家好帝国系统做网站地图
  • 废料回收网站建设微信小程序需要收费吗
  • 百度seo什么意思seo兼职招聘信息
  • 网站 功能需求营销网站建设公司效果
  • 成都市网站设计开发中国建筑业协会
  • ppt可以做网站吗织梦生成网站地图
  • 营销型企业网站建设的步骤网站一级域名和二级域名
  • 天津手网站开发有什么较好的网站开发框架
  • 专业营销网站建设企业官网建站网站
  • 同ip怎么做不同的网站中国砖瓦招聘求职平台
  • 企业网站建设要多少seo关键词优化推广哪家好
  • ps做网站页面设置为多大做暧暧网站
  • seo网站优化方案摘要wordpress密码漏洞
  • 建设明星网站的目的西安保障性住房建设投资中心网站
  • 南京网站建设排名wordpress 分类目录 标签转换器
  • 环球资源网官方网站手机网站建设的重要性
  • 网站建设与管理实践收获asp网站优缺点
  • 网站维护有哪些企业网站域名注册如何填写
  • 重庆网站建设夹夹虫公司.可信南京师范大学课程建设网站