Здравствуйте, гость ( Вход | Регистрация )
XpycT | Дата 22.7.2009, 18:43 |
XpycT, для случая разных отправителей, лучше используй "карту сигналов" QSignalMaper... Спасибо, добавил в закладки . |
|
Litkevich Yuriy | Дата 22.7.2009, 18:16 |
XpycT, для случая разных отправителей, лучше используй "карту сигналов" QSignalMaper, я где-то пример на форуме давал, да и в Асистенте он описан достаточно. П.С. или "отображатель сигналов", или "перенаправитель сигналов", или "коллектор сигналов" не знаю как лучше сказать |
|
XpycT | Дата 22.7.2009, 17:52 |
твою ж... точно не правильно виджеты создал. Вот что значит невнимательность. Спасибо все работает. Вот только хотел спросить , как правельнее создать одинаковые QObject::connect'ы перебором, если у меня допустим их штук 20. Ведь как я понимаю - не правильно будет их дублировать типа
видел макросы типа qobject_cast, qvariant_cast... но не совсем понял как ими пользоваться |
|
ufna | Дата 22.7.2009, 17:24 |
Пришел к тому с чего начал - вернул диалог обратно в виджет, хоть так работает Лучше доразберись. Изначально поправь конструктор. Потом если все так и не идет, дай код, может еще куда что нить забралось. |
|
kwisp | Дата 22.7.2009, 17:23 |
ufna, принимается. со всяким бывает. |
|
ufna | Дата 22.7.2009, 17:15 |
kwisp, сорри, тупил. После поста Юрия в доки глянул, понял. Как то всегда руководствовался правилом - private slot - для внутренних объектов, public slot - для внешних. Изначально как понял, так и делал. Блин ) |
|
kwisp | Дата 22.7.2009, 16:58 |
ufna, не пойму тебя приведи свой пример. вот мой модифицированный Раскрывающийся текст
или так Раскрывающийся текст
что теперь скажете? П.С. что то я сегодня плохо понимаю. пойду на пляж в волейбол играть. |
|
ufna | Дата 22.7.2009, 16:54 |
Цитата категорически не согласен сигналы вообще protected и нормально коннектятся. пример с приватным слотом ты сам мне приводишь пример, где Sender - член класса Rec. В конструкторе же у Хруста создается новый объект, никак не связанный с изначальным классом: ImageWidget *screen1=new ImageWidget; И соединяет он этот screen1, а не TestApp::screen1. И доступа к приватному слоту у этого объекта быть не должно. дополнение: про this понял |
|
kwisp | Дата 22.7.2009, 16:54 |
XpycT, С сигналами всеравно не разобрался.. не понял тебя. на всякий случай напишу. ты сделал класс членами которого являются ImageWidget screen1,screen2. Заметь это не указатели а объекты. при вызове конструктора класса они благополучно инициализируются в списке инициализации конструкторами по умолчанию(хоть ты их и не трогаешь явно с++ это делает за тебя) за тем ты зачем не ясно объявляешь( и инициализируешь из кучи) в конструкторе локальные переменные указетели одноименные с твоими объектами класса ImageWidget* screen1, *screen2. потом вообще весело ты соединяешь сигнал одного локально видимого динамически созданного обекта screen1 с каким то слотом(не важно каким) надеясь что вызовется сигнал. вариантов поправить эту ошибку много один из вариантов будет таким:
пробуй теперь. здесь я оставил объекты ImageWidget как есть а вообще тролли настоятельно рекомендуют создавать виджеты динамически. |
|
Litkevich Yuriy | Дата 22.7.2009, 16:52 |
Слот у тебя приватный, а присоединяешь его к сигналу, поступаемому от чужого класса, никак не связанного с данным. Сделай слот public. он соеденяет со своим (this) слотом, который этим (this) классом видится. А а сигнал виден всегда, если виден объект.при чем тут слоты? угуты посмотри что написал то? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.4.2024, 15:18 |