Найти - Пользователи
Полная версия: PyQt4 | Как передать сигнал из дочернего окна в родительское?
Начало » GUI » PyQt4 | Как передать сигнал из дочернего окна в родительское?
1 2 3 4 5
PEHDOM
MrViktor
Я думаю, что тут другое поведение, а именно рисунок - это данные (модель), холст и прочее это представления и делегаты. Дальше думаю не стоит продолжать, все таки немного не по теме.
Понятное дело что фотошоп устроен несколько сложнее чем родительское-дочернее окно. Это просто самый банальный пример где нужно передавать данные из окна не закрывая его. Смысл его что вы делаете какието изменения в дочернем окне : изменяете ползунок яркости/прозрачности/частоты/амплитуды/НЕХ, убираетеставите галочку показать\скрыть, меняете размер шрифта, количтество столбцов-колонк, размер ячеек в сетке, еще какунить опцию и сразу видите изменения, если вас все устраивает жмете ОК и закрываете окно, если нет еще раз меняете пока не достигнете нужного результата.
Kyrym
MrViktor
Извиняюсь, но я даже не представляю таких конверторов и калькуляторов. К примеру есть некая программа с главным окном (родитель), из нее вызываем конвертер (дочернее). В дочернем мы что-то конвертируем и возвращаем родителю, так? Но зачем оставлять открытым дочернее окно?
Собственно Pendom основной смысл передал.
Дам и свой пример, описывающий суть вопроса, чтобы Вам было понятно.
Допустим, что дочернее окно считает площадь многогранной фигуры, на описание которой нужно с десяток полей.
Программа родитель рассчитывает стоимость покраски этой фигуры, используя тоже десяток полей - входных данных. Однако родителю нужна площадь для запуска расчёта.
В данном примере видно, что закрывать дочернее окно после первого вода данных просто глупо, для небольших изменений придётся заполнять все 10 полей или дополнительно сохранять исходные данные в отдельном файле, а потом их подгружать - но это очень трудоёмко.
MrViktor
PEHDOM
Это просто самый банальный пример где нужно передавать данные из окна не закрывая его.
Вы не поняли моего ответа, с моделью данных может работать несколько представлений. Таким образом дочернее не чего не передает родителю, родитель просто отображает изменения из модели сделанные дочерним окном. Извиняюсь если не совсем понятно объясняю.
Kyrym
Допустим, что дочернее окно считает площадь многогранной фигуры, на описание которой нужно с десяток полей.
Программа родитель рассчитывает стоимость покраски этой фигуры, используя тоже десяток полей - входных данных. Однако родителю нужна площадь для запуска расчёта.
А не проще сделать в дочернем просто поля ввода, а расчет по ним пусть производит родитель? Думаю так гораздо проще, родитель получил данные полей дочернего окна, произвел расчет площади ну и дальнейшие манипуляции.
Kyrym
MrViktor
А не проще сделать в дочернем просто поля ввода, а расчет по ним пусть производит родитель? Думаю так гораздо проще, родитель получил данные полей дочернего окна, произвел расчет площади ну и дальнейшие манипуляции.
Т.е передавать родителю не одну переменную, а десяток? Даже не в этом дело, всё равно данные нужно передавать, не закрывая дочернее окно.
PEHDOM
MrViktor
Вы не поняли моего ответа, с моделью данных может работать несколько представлений. Таким образом дочернее не чего не передает родителю, родитель просто отображает изменения из модели сделанные дочерним окном. Извиняюсь если не совсем понятно объясняю.
Да нет, я прекрасно вас понял, но ИМХО какая разница как это просходит? Передат ли дочернее окно данные прямо родителю, или оно эти данные передает/модифицирует модели, а уже оотуда инициируется изменения родительского окна(или оно само видит что данные поменялись и соответвенно реагирует). Суть то не меняеться. Дочернее окно изменяя данные остается открытым.

Я думаю что у Kyrym в его программе тоже все не так просто, он просто набросал запускабельный пример и спросил: “как реализовать”?
MrViktor
Kyrym
Т.е передавать родителю не одну переменную, а десяток?
Не передавать, чтоб родитель (кнопка расчет площади на форме родителя) брал данные из полей сам (у дочернего только кнопка закрыть и куча полей) тогда закрывать ничего не нужно. Может я конечно ошибаюсь, с Qt еще плохо знаком, но мне кажется так проще.
Вот от такого моего мышления, я и дошел до того, что мне оно пока не нужно, но примеры себе сохранил.
Rodegast
> ну-ну…

Вот по этому тебе и бесполезно помогать. Ты всё равно никого не послушаешь.

> имхо усложняешь задачу делай коннект в приложении

У тебя на диалоге 100500 виджетов. Ты их все подключать будешь?
MrViktor
Rodegast
Вот по этому тебе и бесполезно помогать. Ты всё равно никого не послушаешь.
Не-нет, это не моя задача (не топик стартер), я просто рассуждал так сказать, чтоб почерпнуть на будущее полезной инфы и не надо так категорично. Вот от вас и поступила критика к которой грех не прислушаться, ну на 100500 полей я не рассчитывал (полей 10 от силы) коннект в плане сигнал слот?
До разберусь с текущими делами, попробую разные варианты данной задачи, спортивный интерес появился
Rodegast
> Не-нет, это не моя задача

Я это Kyrym-у писал.

> ну на 100500 полей я не рассчитывал (полей 10 от силы) коннект в плане сигнал слот?

Да это connect. Смысл в том что если нужно соединить 2 виджета, то это реально, но если их даже 10 на окно, то начнутся проблемы. Да и к чему ты их подключать будешь? К виджетам в основном окне?

P.S. На самом деле задача довольно лёгкая.
Kyrym
MrViktor
Не передавать, чтоб родитель (кнопка расчет площади на форме родителя) брал данные из полей сам (у дочернего только кнопка закрыть и куча полей) тогда закрывать ничего не нужно. Может я конечно ошибаюсь, с Qt еще плохо знаком, но мне кажется так проще.
Соль в том, что в моём случае дочернее окно может использоваться как независимая программа, поэтому логика должна присутствовать в дочернем.
PEHDOM
Я думаю что у Kyrym в его программе тоже все не так просто, он просто набросал запускабельный пример и спросил: “как реализовать”?
Совершенно верно.
Rodegast
Вот по этому тебе и бесполезно помогать. Ты всё равно никого не послушаешь.
Да ладно. Когда мне нормально отвечают, тогда я этим пользуюсь. И большое спасибо всем людям с форумов, что мне помогли. Благодаря им я уже написал несколько работающих программ, что дают мне требуемый результат.
Другое дело, что я расширяю возможности своих программ, а для этого нужны новые знания. Я и так самостоятельно ковыряюсь с некоторыми для меня сложными функциями и не закидываю форум лишними вопросами.
И вообще, какой смысл писать сообщения типа “так делать не надо и точка” без всяких объяснений. Максимум - это “читайте иностранную литературу в оригинале”. Этим делу не поможешь… Зачем тогда утруждать себя ответами в принципе? (это риторический вопрос).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB