Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » [PyQt4] Как правильно изменить размер виджета внутри окна диалога? [RSS Feed]

#1 Окт. 5, 2009 16:43:18

Митрич
От:
Зарегистрирован: 2009-03-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Как правильно изменить размер виджета внутри окна диалога?

Ситуация такая: внутри окна диалога (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 новым, а размер окна диалога менять не хочет.
Может кто из добрых людей подскажет, как правильно это делается?



Офлайн

#2 Окт. 5, 2009 17:23:58

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Как правильно изменить размер виджета внутри окна диалога?

делай self.parent.adjustSize(), где self.parent - это родитель таблицы, то есть диалог, получается от отсюда:

class MyTable(QTableView):
def __init__(self, parent=None):
QTableView.__init__(self, parent)
self.parent = parent



Офлайн

#3 Окт. 5, 2009 20:47:37

Митрич
От:
Зарегистрирован: 2009-03-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Как правильно изменить размер виджета внутри окна диалога?

pasaranax
спасибо!
но решение очень-очень частное: что делать, если self.parent тоже должен менять родителя. да и разведение лишней иерархии подклассов дело не очень красивое…



Офлайн

#4 Окт. 5, 2009 22:43:12

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Как правильно изменить размер виджета внутри окна диалога?

У виждета можно сделать сигнал, который он шлет, когда меняет свой размер. А родитель будет его отслеживать и действовать в соответствии..

class MyTable(QTableView):
resized = pyqtSignal()
def resizeEvent(self, event):
self.resized.emit()
вроде того, так, наверное, даже религиозно правильнее



Офлайн

  • Начало
  • » GUI
  • » [PyQt4] Как правильно изменить размер виджета внутри окна диалога?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version