Maigcally我无法使用PyQt 4继承QWidget:
from PyQt4.QtGui import QApplication, QMainWindow, QWidget
class MyWidget(QWidget):
pass
if __name__ == "__main__":
app = QApplication([])
window = QMainWindow()
window.resize(200, 200)
widget1 = MyWidget(window)
widget1.resize(100, 100)
widget1.setStyleSheet("background-color:#FFFFFF")
window.show()
app.exec_()
它不起作用。我只是看不到小部件。但是,使用QLabel而不是QWidget可以工作。
感谢。
的解决方案的
重新实现paintEvent:
class MyWidget(QWidget):
def paintEvent(self, event):
o = QStyleOption()
o.initFrom(self)
p = QPainter(self)
self.style().drawPrimitive(QStyle.PE_Widget, o, p, self)
答案 0 :(得分:0)
您正确地进行了子类化。 “问题”只是QWidget与主窗口具有相同的背景颜色(您对setStyleSheet的调用不起作用)。
作为证据,从终端运行此代码:
from PyQt4.QtGui import QApplication, QMainWindow, QWidget, QLabel
class MyWidget(QWidget):
def enterEvent(self, evt):
print 'a'
if __name__ == "__main__":
app = QApplication([])
window = QMainWindow()
window.resize(200, 200)
widget1 = MyWidget(window)
widget1.resize(100, 100)
widget1.setStyleSheet("background-color:#FFFFFF")
window.show()
app.exec_()
当您将鼠标移动到第一个100,100像素的正方形时,您会在终端中看到字母'a'