Событие изменения размера PyQt graphicsview - PullRequest
3 голосов
/ 29 марта 2011

Я хотел бы подключить событие изменения размера в графическом представлении к функции, использующей PyQt.Я добавил QGraphicsView в графический интерфейс, используя QtCreator.Я попробовал несколько вариантов без успеха:

gv.pyqtConfigure(resize=self.printR)

QtCore.QObject.connect(gv,QtCore.SIGNAL("resized()"),self.printR)          

gv.resize.connect(self.printR)              

Однако ни одна из вышеперечисленных работ (я пробовал использовать много вариантов названия события).

Как правильно делатьthis?

В качестве расширенного вопроса, есть ли где-нибудь окончательный список всех сигналов, доступных различным виджетам в Qt, т.е. все возможные значения, которые могут быть переданы в SIGNAL (), или атрибуты "signal"доступны для виджета (например, button.clicked.connect ())?

1 Ответ

8 голосов
/ 29 марта 2011

Справочник по классам PyQt - лучшее место для поиска сигналов и методов класса.

Подключение простых сигналов можно сделать так:

self.connect(senderObject, QtCore.SIGNAL("signalName()"), self.slotMethod)

Однако, насколько я могу судить, большинство виджетов обычно не излучают сигнал при изменении их размера. Чтобы сделать это, вам нужно будет повторно реализовать класс QGraphicsView и его метод resizeEvent, изменив его так, чтобы он излучал такой сигнал, например:

from PyQt4.QtGui import QGraphicsView
from PyQt4.QtCore import SIGNAL

class customGraphicsView(QGraphicsView):

    def __init__(self, parent=None):
        QGraphicsView.__init__(self, parent)

    def resizeEvent(self, evt=None):
        self.emit(SIGNAL("resize()"))

Используя Qt Designer, вы сможете превратить существующий виджет QGraphicsView в заполнитель для такого пользовательского виджета, щелкнув по нему правой кнопкой мыши и выбрав Повышение до ... . Для получения справки, смотрите здесь .

Надеюсь, это достаточно ответит на ваш вопрос.

...