日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT5界面操作3: QPainter和paintEvent(self, event)的配合

發布時間:2025/3/21 c/c++ 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT5界面操作3: QPainter和paintEvent(self, event)的配合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一? 說明

????????本篇繼續以顯示鼠標位置做例;用窗口的paintEvent事件進行顯示。本例示范如何用painter、update、paintEvent幾個方面的配套。

????????注意: QPainter幾乎只能在窗口的paintEvent事件中使用。

二? 示例代碼

import sys from PyQt5.QtCore import (QEvent, QTimer, Qt,QPoint) from PyQt5.QtWidgets import (QApplication, QMenu,QMainWindow) from PyQt5.QtGui import QPainterclass Widget( QMainWindow ):def __init__(self, parent=None):super(Widget, self).__init__(parent)self.text ='hello worlds'self.resize(1200, 800)self.move(100, 100)#設置標題self.setWindowTitle("Events")self.setMouseTracking(True)def mouseMoveEvent(self, event):#如果沒有鼠標雙擊,執行globalPos = self.mapToGlobal(event.pos())x = globalPos.x()y = globalPos.y()self.text = '鼠標位置 {0:4d},{1:4d} '.format(x, y)self.update()def paintEvent(self, event):text = self.textpainter = QPainter(self)if self.text:#顯示給定坐標處的文本,坐標,對齊方式。文本內容# painter.drawText(self.rect(), Qt.AlignBottom | Qt.AlignHCenter, self.message)painter.drawText(QPoint(50, 50), self.text);#5秒鐘后觸發清空信息的函數,并重新繪制事件# QTimer.singleShot(5000, self.clearMessage)# QTimer.singleShot(5000, self.update)if __name__ == "__main__":app = QApplication(sys.argv)form = Widget()form.show()app.exec_()

三、代碼說明

3.1 定義一個全局變量,這是要顯示的字符串

? ? self.text ='hello worlds'

3.2? 定義鼠標的坐標

? def mouseMoveEvent(self, event):
? ? #如果沒有鼠標雙擊,執行
? ? globalPos = self.mapToGlobal(event.pos())
? ? x = globalPos.x()
? ? y = globalPos.y()
? ? self.text = '鼠標位置 {0:4d},{1:4d} '.format(x, y)

? ? self.update()

  • 鼠標移動后,坐標位置改變,保存位置? self.text = '鼠標位置 {0:4d},{1:4d} '.format(x, y)
  • 自動繪制:self.update()

3.3 繪制函數

  • ? ? ? 定義一個刷子,準備畫本窗口:painter = QPainter(self)? ??
  • ? ? ? 對窗口進行繪制:painter.drawText(QPoint(50, 50), self.text);

或用

painter.drawText(self.rect(), Qt.AlignCenter, self.text)

將文字顯示在窗口中間。

四、效果

總結

以上是生活随笔為你收集整理的QT5界面操作3: QPainter和paintEvent(self, event)的配合的全部內容,希望文章能夠幫你解決所遇到的問題。

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