Название: Диалоги Отправлено: WebAngel от Июль 08, 2006, 20:45 Допустим есть: MainDialog, SettingsDialog, и OtherDialog.
В SettingsDialog - устанавливаются разные настройки. Как правильно сделать, что бы доступ к SettingsDialog можно было получить из MainDialog, OtherDialog и вообще любого диалога? Т.е. например, вызывается диалог в MainDialog и устанавливаются настройки и потом все эти настройки доступны другим диалогам. Как это _правильно_ сделать? Qt: 3.3.3 P.S. и, пользуясь случаем, хочу еще такое спросить: как в QListView отлавливать нажатия клавишь? Какой для этого сигнал? !ЗОС! Название: Re: Диалоги Отправлено: QCasper от Июль 08, 2006, 21:37 Цитата: "WebAngel" Допустим есть: MainDialog, SettingsDialog, и OtherDialog. В SettingsDialog - устанавливаются разные настройки. Как правильно сделать, что бы доступ к SettingsDialog можно было получить из MainDialog, OtherDialog и вообще любого диалога? Т.е. например, вызывается диалог в MainDialog и устанавливаются настройки и потом все эти настройки доступны другим диалогам. Как это _правильно_ сделать? Qt: 3.3.3 P.S. и, пользуясь случаем, хочу еще такое спросить: как в QListView отлавливать нажатия клавишь? Какой для этого сигнал? !ЗОС! хм, а че тут непонятного, методы чтения делай и читай в чем проблема то? например можно в классе MainDialog создавать объекты SettingsDialog и ОtherDialog и читать все что угодно, а если в свою очередь нужно в этих двух поиметь данные мэйна, то можно передать им указатель на мэйн. А еще все это можно связать сигналами и слотами, особенно хорошо если нужна синхронизация, типа если тут изменилось, то там должно отобразиться. а по поводу QListView, это такой же виджет, нужно обработать событие QKeyEvent, указатель на объект класса которого приходит в keyPressEvent Название: Диалоги Отправлено: WebAngel от Июль 08, 2006, 22:07 Мне надо в ОtherDialog прочитать данные SettingsDialog, который создается в MainDialog.
Ситуация такая: в MainDialog создается SettingsDialog и обект CSpecialFunctcional (а в этом CSpecialFunctcional создается OtherDialog) . Вот как в OtherDialog получить достуа к SettingsDialog, уже созданному в MainDialog? Может Вам это елементано, но мы вот недавно начали знакомится и если не сложно, то можно несколько строк кода :) Название: Диалоги Отправлено: Sergeich от Июль 09, 2006, 00:56 Вообще в ООП принята такая практика: данные и их представление разделеляются, т.е. в данном случае нужно выделить отдельный класс для хранения данных приложения( скажем AppSettings ), и класс диалога для модификации этих данных. Чтобы данные класса AppSettings были доступны из любого класса приложения применяется т. н. паттерн Singleton. Суть вкратце в следующем: экземпляр класса AppSettings можно получить только через один определенный статический метод, к-ый возвращает указатель на этот класс.
Код:
Все это очень хорошо написано в книге Эрика Гаммы и сотоварищей "Паттерны проектирования", т.н. "Design Patterns" from Gang of Four ( GoF ), к-ую рекомендую к прочтению. Название: Диалоги Отправлено: WebAngel от Июль 09, 2006, 07:11 Sergeich, спасибо большое! Заработало :)
Чесно говоря я думал, что здесь, в Qt, будет для этого что то специфичное... но не до такой же степени Название: Диалоги Отправлено: QCasper от Июль 09, 2006, 11:48 Цитата: "WebAngel" Sergeich, спасибо большое! Заработало :) Чесно говоря я думал, что здесь, в Qt, будет для этого что то специфичное... но не до такой же степени синглтон это не Qt, это ООП добавлено спустя 4 минуты: Цитата: "Sergeich" Вообще в ООП принята такая практика: данные и их представление разделеляются, т.е. в данном случае нужно выделить отдельный класс для хранения данных приложения( скажем AppSettings ), и класс диалога для модификации этих данных. Чтобы данные класса AppSettings были доступны из любого класса приложения применяется т. н. паттерн Singleton. Суть вкратце в следующем: экземпляр класса AppSettings можно получить только через один определенный статический метод, к-ый возвращает указатель на этот класс. Код:
Все это очень хорошо написано в книге Эрика Гаммы и сотоварищей "Паттерны проектирования", т.н. "Design Patterns" from Gang of Four ( GoF ), к-ую рекомендую к прочтению. в этот класс не мешало бы еще вставить что-нить типа Код: static void destroy() { Sergeich, а есть у тебя такая книжка на русском? Название: Диалоги Отправлено: SLiDER от Июль 09, 2006, 23:48 Цитата: "QCasper" а есть у тебя такая книжка на русском? По русски эта книжка называется "Приемы объектно-ориентированного проектирования. Паттерны проектирования". Издана издательским домом "Питер" в 2003 году. Переиздание от 2006 года можно найти, например, здесь http://www.ozon.ru/context/detail/id/2457392/, за 247 наших деревянных. К сожалению в электронном виде встречается только на английском (может быть только мне :( :?: ). З.Ы. Книга как говорится из серии "must have". З.З.Ы. Из серии "парадигмы программирования" еще очень бы рекомендовал всем ознакомиться с книгой К. Чарнецки и У. Айзенекера "Порождающее программирование. Методы, инструменты, применение" того же издательства (http://www.bolero.ru//product-38226152.html), что бы, так сказать, не зацикливаться на одном. :D Особенно рекомендую главу про "аспектно-ориентированное программирование" ( 8 ) и "статическое метапрограммирование на языке С++" (10). А там еще есть глава (11) про "ментальное программирование" :D |