Форум сайта python.su
Ситуация такая: внутри окна диалога (QDialog) есть виджет (QTableView). В нужный момент нужно изменить размер виджета, но размер окна диалога не меняется автоматически. Вот гуру (Rapid GUI Programming with Python and Qt The Definitive Guide to PyQt Programming Mark Summerfield) советует
def setNewSize(self):
self.resize(self.sizeHint())
self.update()
self.updateGeometry()
self.view.resize(newSize)
self.view.update()
self.view.updateGeometry()
self.view.resize(newSize)
self.view.update()
self.updateGeometry()
Офлайн
делай self.parent.adjustSize(), где self.parent - это родитель таблицы, то есть диалог, получается от отсюда:
class MyTable(QTableView):
def __init__(self, parent=None):
QTableView.__init__(self, parent)
self.parent = parent
Офлайн
pasaranax
спасибо!
но решение очень-очень частное: что делать, если self.parent тоже должен менять родителя. да и разведение лишней иерархии подклассов дело не очень красивое…
Офлайн
У виждета можно сделать сигнал, который он шлет, когда меняет свой размер. А родитель будет его отслеживать и действовать в соответствии..
class MyTable(QTableView):
resized = pyqtSignal()
def resizeEvent(self, event):
self.resized.emit()
Офлайн