Russian Qt Forum
Март 29, 2024, 11:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: PyQT + MDI  (Прочитано 2322 раз)
shadow
Гость
« : Июль 16, 2018, 15:40 »

Доброго времени суток!

Подскажите как реализовать такую вещь.

У меня есть MDI приложение в дочерних окнах я рисую QGraphicsItem-мы (шестигранники) я хочу чтобы при наведении на шестигранник в главном окне (MainWindow) в статус баре (statusBar) отображался номер шестигранника? Как реализовать передачу данных между дочерним окном и главным окном?


Спасибо!
« Последнее редактирование: Июль 18, 2018, 13:31 от shadow » Записан
shadow
Гость
« Ответ #1 : Июль 19, 2018, 13:35 »

Неужели невозможно реализовать такой функционал?Непонимающий Грустный Грустный
Записан
shadow
Гость
« Ответ #2 : Июль 19, 2018, 14:48 »

Реализовал в тупую(или так и надо?!) передачей указателя на родительское окно:

Код:
    def createMdiChild(self):
        child = MapWindow(self)
        self.mdiArea.addSubWindow(child)
        return child

Также в следующем классе:

Код:
class MapWindow(QWidget):
    def __init__(self, parentwidget):
        super(MapWindow, self).__init__()
        self.parentwidget = parentwidget
.....
.....
    def add_node(self):
        self.setWindowTitle("Test")
        self.Number = 1
        for fa in range(10):
            node = Hexagon(self.parentwidget)
            self.setup(node)
Ну и наконец:
Код:
   
class Hexagon(QGraphicsItem):
    def __init__(self, mainwindowpointer):
        super(Hexagon, self).__init__()
        self.mainwindowpointer = mainwindowpointer

 def hoverEnterEvent(self, event):
        # print(self.Number)
        self.setSelected(True)
        self.mainwindowpointer.statusBar().showMessage("Number: {}".format(self.Number))

Как такой вариант реализации?

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 20.