2015-08-28 1 views
0

Я пытаюсь добавить простой квадрат в макет сетки, но он, похоже, не работает.PySide Frame не отображается в макете сетки

Вот код:

self.resultFrame = QFrame() 
self.resultFrame.setGeometry(100, 200, 0, 0) 
self.resultFrame.setStyleSheet("QWidget { background-color: #000 }") 

gridLayout.addWidget(self.resultFrame, 0, 0, 1, 4) 

Если я переключаю self.resultFrame к, например, QLabelQPushButton или, кажется, работает хорошо, но не с QFrame.

Что я могу делать неправильно?

+0

Я думаю, что у вас есть использование [setFrameStyle] (http://doc.qt.io/qt-4.8/qframe.html#setFrameStyle), чтобы определить, как рисовать кадр. – Mel

ответ

0

Трудно понять, что вы можете делать неправильно, так как мы не видим остальную часть кода, но, по крайней мере, я могу подтвердить, что этот простой пример рисует черную рамку и кнопку внутри макета сетки.

from PySide import QtGui, QtCore 

class MyWindow(QtGui.QWidget): 
    def __init__(self, parent = None): 
     super(MyWindow, self).__init__(parent) 

     self.resultFrame = QtGui.QFrame() 
     self.resultFrame.setGeometry(100, 200, 0, 0) 
     self.resultFrame.setStyleSheet("QFrame { background-color: #000 }") 

     self.myButton = QtGui.QPushButton(self, 'test') 

     gridLayout = QtGui.QGridLayout() 
     gridLayout.addWidget(self.resultFrame, 0, 0) 
     gridLayout.addWidget(self.myButton, 0, 1) 
     self.setLayout(gridLayout) 

     self.resize(400, 400) 
     self.show() 

win = MyWindow() 

Это также может быть способом использовать пролеты при использовании метода addWidget в сетке с остальной частью предметов. Например, если я использовал gridLayout.addWidget (self.resultFrame, 0, 0, 1, 4) в коде выше, кнопка больше не будет отображаться!