如果我在classlevel中使用QtGui.QWidget,它会通过self.sizeHint()方法给出窗口大小
class MainWin(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
print(self.sizeHint())
但如果我使用QtGui.QWidget而没有下面提到的类。只是打印 PyQt4.QtCore.QSize(-1,-1)。问题是什么?
app=QtGui.QApplication(sys.argv)
win = QtGui.QWidget()
print(win.sizeHint())
win.setFocusPolicy(QtCore.Qt.StrongFocus)
win.show()
app.exec_()
答案 0 :(得分:1)
如果没有widget的布局,sizeHint()
的默认实现将返回无效大小(-1,-1),否则返回布局的首选大小。
因此,您需要设置一些布局(适用于两种情况):
from PyQt4 import QtGui, QtCore
class MainWin(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
lay = QtGui.QGridLayout()
self.setLayout(lay)
print "case 1: ", self.sizeHint()
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
#case 1
win=MainWin()
win.show()
#case 2
win1 = QtGui.QWidget()
win1.setFocusPolicy(QtCore.Qt.StrongFocus)
lay = QtGui.QGridLayout()
win1.setLayout(lay)
win1.show()
print "case 2: ", win1.sizeHint()
sys.exit(app.exec_())