Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2010, 03:36   #1
fzfx
Новичок
Джуниор
 
Регистрация: 25.01.2010
Сообщений: 1
По умолчанию построение модели одного приложения

уткнулся тут носом в проблему модели приложения, использующего классы и функционал qt 4.6.
пытаюсь написать клиент для БД и на данный момент имею следующие классы:
1. MainWindow, наследуемый от QMainWindows. Главное окно программы. запускается непосредственно из main.cpp:
Код:
    MainWindow w;
    w.show();
2. Dialog_userManagment, наследуемый от QDialog. диалоговое окно, экземпляр которого приватно объявлен в классе MainWindow, стартующее в слоте того же MainWindow:
Код:
void MainWindow::on_pushButton_userManagment_clicked()
3. Database, наследуемый от QObject. вот его-то я и пытаюсь объявить таким образом, дабы экземпляр его был доступен внутри любого места программы (либо слоты экземпляра имели возможность принимать сигналы из любого места программы). в данный момент экземпляр объявлен в main.cpp перед объявлением MainWindow из п. 1.
в самом Database присутствуют публичные указатели на такие вещи как QSqlDatabase и QSqlQuery, необходимые для работы с БД.
я рассуждаю так: по идее экземпляр Database или указатель на него должен быть доступен из прочих экземпляров (MainWindow, Dialog_userManagment и прочих, что появятся в будущем), поскольку возможность обратиться к БД с помощью экземпляра Database будет нужна в те моменты, когда код будет исполнятся в этих местах. самое логичное - воспользоваться механизмом сигналов-слотов, но есть следующая загвоздка: QObject::connect(...), соединяющий сигналы со слотом, требует указатели на экземпляр класса, испускающего сигнал (MainWindow или Dialog_userManagment) и на экземпляр класса с принимающим слотом (Database). в каком же месте кода я могу использовать QObject::connect(...), поскольку ни в одном из классов указатель на Database у меня не задаётся? или же необходимо в каждом классе делать подобный указатель и при переходах в диалоговые окна передавать им его? если да, то в этом случае также придётся инклюдить перед описанием каждого класса "database.h". и в этом h-файле задан #ifdef, мне почему-то свербит и кажется, что это не наилучший вариант развития событий.

Последний раз редактировалось fzfx; 25.01.2010 в 03:38.
fzfx вне форума Ответить с цитированием
Старый 25.01.2010, 04:05   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от fzfx Посмотреть сообщение
...если да, то в этом случае также придётся инклюдить перед описанием каждого класса "database.h". и в этом h-файле задан #ifdef, мне почему-то свербит и кажется, что это не наилучший вариант развития событий.
Или так, или можно в классе MainWindow сделать публичный указатель, который будет инициализироваться в момент создания объекта класса базы данных. И в последствии все классы, которым необходим этот указатель могу обращаться к члену MainWindow
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение с помощью CASE-средств Rational Rose модели программного обеспечения GrafVovanDOS Помощь студентам 1 20.12.2009 21:53
Передать информацию из одного приложения вдругое Sergey2 Общие вопросы Delphi 2 11.10.2009 00:04
Две иконки в трее одного приложения Shouldercannon Общие вопросы Delphi 1 18.06.2009 20:48
Вызов одного приложения из другого zalum Общие вопросы Delphi 8 24.04.2009 10:05
Как различить два процесса одного приложения? viter.alex Win Api 1 31.03.2009 21:01