1
A
回答
1
此示例顯示如何在重載的QLabel中自定義繪畫。在paintEvent的畫家上設置一個不同的畫筆/畫筆以更改氣泡的顏色。
from PyQt4 import QtCore, QtGui
class Bubble(QtGui.QLabel):
def __init__(self,text):
super(Bubble,self).__init__(text)
self.setContentsMargins(5,5,5,5)
def paintEvent(self, e):
p = QtGui.QPainter(self)
p.setRenderHint(QtGui.QPainter.Antialiasing,True)
p.drawRoundedRect(0,0,self.width()-1,self.height()-1,5,5)
super(Bubble,self).paintEvent(e)
class MyWidget(QtGui.QWidget):
def __init__(self,text,left=True):
super(MyWidget,self).__init__()
hbox = QtGui.QHBoxLayout()
label = Bubble(text)
if not left:
hbox.addSpacerItem(QtGui.QSpacerItem(1,1,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Preferred))
hbox.addWidget(label)
if left:
hbox.addSpacerItem(QtGui.QSpacerItem(1,1,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Preferred))
hbox.setContentsMargins(0,0,0,0)
self.setLayout(hbox)
self.setContentsMargins(0,0,0,0)
if __name__ == '__main__':
a = QtGui.QApplication([])
w = QtGui.QWidget()
vbox = QtGui.QVBoxLayout()
vbox.addWidget(MyWidget("Left side"))
vbox.addWidget(MyWidget("Right side",left=False))
vbox.addWidget(MyWidget("Left side"))
vbox.addWidget(MyWidget("Left side"))
w.setLayout(vbox)
w.show()
a.exec_()
然後你會得到類似於下面的內容。
+0
當你叫'paintEvent'? –
+0
@CheynShmuel。 'paintEvent'方法是一個事件處理程序。每當小部件需要重新繪製時,它都由Qt調用。 – ekhumoro
相關問題
- 1. Android泡泡短信
- 2. 在App Sotre中批准的iPhone短信聊天氣泡?
- 3. PyQt的,小部件
- 4. QlikView:調整氣泡大小
- 5. CSS3 - 頂部通知氣泡
- 6. SSRS BIDS 2008氣泡圖 - 泡泡傳奇大小
- 7. 短信氣球/長聊盒
- 8. 在nvd3氣泡圖中隱藏氣泡
- 9. 氣泡圖中的Tabluea氣泡
- 10. SSRS BIDS 2008氣泡圖 - 氣泡放置
- 11. PyQt:相對部件大小
- 12. 定製谷歌地圖信息氣泡
- 13. Google MAP V2自定義信息氣泡
- 14. 刪除Google地圖信息氣泡
- 15. ExtJs氣泡菜單事件
- 16. Windows氣球小部件?
- 17. mootools氣泡圖
- 18. D3氣泡圖
- 19. 氣泡排斥
- 20. VBA氣泡圖
- 21. Flex氣泡圖
- 22. Highcharts氣泡圖
- 23. 氣泡圖中較大氣泡背後隱藏的氣泡很少
- 24. Highcharts Bubblechart最小/最大氣泡尺寸
- 25. Flex氣泡圖泡泡縮放
- 26. PyQt - 在小部件頂部顯示小部件
- 27. PyQt組合框小部件沒有信號時爲空
- 28. 像iPhone短信WPF泡消息
- 29. 如何在泡泡中添加氣泡事件higharts
- 30. PyQt小部件在多個文件
[自定義的Widget PyQt4的(http://zetcode.com/tutorials/pyqt4/customwidgets/) –