QT5界面操作3: QPainter和paintEvent(self, event)的配合
生活随笔
收集整理的這篇文章主要介紹了
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)的配合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器视觉-特征点检测:【2】Harrs角
- 下一篇: QT5实践:如何应用窗口菜单