Найти - Пользователи
Полная версия: [PyQt4] Как правильно изменить размер виджета внутри окна диалога?
Начало » GUI » [PyQt4] Как правильно изменить размер виджета внутри окна диалога?
1
Митрич
Ситуация такая: внутри окна диалога (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()
но у меня следующий код не делает ничего (layout окна диалога возвращает все в исходное состояние)
        self.view.resize(newSize)
self.view.update()
self.view.updateGeometry()
а вот такой код:
        self.view.resize(newSize)
self.view.update()
self.updateGeometry()
делает размер self.view новым, а размер окна диалога менять не хочет.
Может кто из добрых людей подскажет, как правильно это делается?
pasaranax
делай self.parent.adjustSize(), где self.parent - это родитель таблицы, то есть диалог, получается от отсюда:
class MyTable(QTableView):
def __init__(self, parent=None):
QTableView.__init__(self, parent)
self.parent = parent
Митрич
pasaranax
спасибо!
но решение очень-очень частное: что делать, если self.parent тоже должен менять родителя. да и разведение лишней иерархии подклассов дело не очень красивое…
pasaranax
У виждета можно сделать сигнал, который он шлет, когда меняет свой размер. А родитель будет его отслеживать и действовать в соответствии..
class MyTable(QTableView):
resized = pyqtSignal()
def resizeEvent(self, event):
self.resized.emit()
вроде того, так, наверное, даже религиозно правильнее
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB