![]() |
|
![]() ![]() ![]() |
|
ЛунныйОборотень |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 12.11.2006 Репутация: нет Всего: 1 |
Здравствуйте!
Есть такой вопрос- есть несколько классов, некоторые из них используют методы класса mainwindow . Я делаю так: В стороннем классе:
Но ,как я понимаю, проблема в том что этим я создаю еще один полноценный экземпляр главного окна.Что мне совершенно не нужно! Можно ли просто получить указатель на mainwindow ? Дабы через него просто вызывать методы из другого класса? Спасибо. |
|||
|
||||
loneybibi |
|
|||
![]() Любитель ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 28.5.2010 Где: Донецк (Украина) Репутация: 3 Всего: 3 |
ну как вариант при создании своего класса который использует методы mainwindow передать ему указатель!
а потом использовать что то типа: <static_cast>(MainWindow1)->my_proc1(); где "MainWindow1" = указателю на класс родителя ! -------------------- Red Hat Fedora 17 Qt 4.8.1 (x64), GCC 4.4.3, G++ 4.4.3, QtCreator 2.4.1 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
ЛунныйОборотень, в Qt для этих целей существует система сигнал/слот. Подумай, может лучше ее использовать? А если не выходит, то стоит пересмотреть архитектуру программы. Так как она, скорее всего, неверная - есть более правильный вариант организации.
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Как правило - да, используй сигнал/слот.
Если всё же нужен указатель на MainWindow (или другие окна) - используй свой Application.
|
|||
|
||||
plica98 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 12.3.2012 Репутация: нет Всего: нет |
У меня проблема такого плана.
Есть много (массив 2-3 тысячи) объектов, которые как-то должны реагировать на мышь. Объекты от производного класса QGraphicsRectItem. Переписанный метод mousePressEvent ловит нажатия кнопок мыши, а обработку хочу сделать в MainWindow. Подскажите, пожалуйста, как мне лучше это реализовать: с помощью сигналов или просто вызовом метода из MainWindow по указателю. Попробовал получить указатель как описано выше. Не получилось. А в чем прорблема пока не понял. Это сообщение отредактировал(а) plica98 - 17.8.2012, 10:06 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
plica98, наверняка ты не хочешь в MainWindow подписываться на сигнал от каждого графиксатема.
Поэтому, сделай класс, произмоводный от сцены и объяви в нем сигнал с параметром указатель на твой графиксатем. Этот сигнал будет вызываться из mousePressEvent. Тогда в MainWindow нужно подписываться на один сигнал. В графиксатем знать указатель на MainWindow не нужно - нужен только указатель на сцену. MainWindow знает указатель на сцену при построении своего ГУИ и связывает сигнал сцены со своим слотом. |
|||
|
||||
plica98 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 12.3.2012 Репутация: нет Всего: нет |
math64, спасибо! Такие мысли меня посещали.
Вы окончательно меня склонили к такой реализации. Премного благодарен. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |