Название: Доступ к элементам окна, описанного в cpp-файле. Отправлено: PavelDart от Декабрь 27, 2009, 20:31 Сейчас, можно сказать, сам себя в угол загнал.
Если до этого все формы проекта описывались в ui_h и в h-файлах, а потом уже управлялись в cpp, то сейчас одну форму для удобства я решил создавать в процедуре cpp. Код
Но вот проблема, мне понадобилось по нажатию клавиши, закрыть эту форму и все данные с tableWidget переместить в глобальную переменную. Но доступа к объектам этой формы другие процедуры соответвенно не имеют. Придётся ли описывать форму с tableWidget как другие формы или есть какой-то иной выход? Название: Re: Доступ к элементам окна, описанного в cpp-файле. Отправлено: BRE от Декабрь 27, 2009, 20:36 Придётся ли описывать форму с tableWidget как другие формы или есть какой-то иной выход? Желательно сделать отдельный диалог.Название: Re: Доступ к элементам окна, описанного в cpp-файле. Отправлено: PavelDart от Декабрь 27, 2009, 20:43 Желательно сделать отдельный диалог. Да, нелучшей идеей было впихивать конструкторы в процедуру. Название: Re: Доступ к элементам окна, описанного в cpp-файле. Отправлено: break от Декабрь 28, 2009, 02:10 В вашем случае так же как и в случае если форма была загружена из ui прямо в программе через uiloader - необходимо воспользоваться функциями поиска дочерних элементов по именам. Для этого при создание элементов задайте им objectName и потом можете искать через
Код
получать указатель на нужный подвиджет нужного типа и работать с ним, например так Код
Название: Re: Доступ к элементам окна, описанного в cpp-файле. Отправлено: ilot от Декабрь 28, 2009, 12:17 Цитировать Придётся ли описывать форму с tableWidget как другие формы или есть какой-то иной выход? Нужно создать отдельный класс, наследованный от QWidget, и инкапсулировать в нем всю необходимую форме функциональность. Все действия по сборке интерфейса, которые сейчас выполняются в void mw::grph_in_slot(), должные выполняться в конструкторе данного виджета. Для обработки нажатия клавиши создать приватный слот:Код: private slots: В void mw::grph_in_slot() останется только создать объект данного класса. Название: Доступ к элементам окна, описанного в cpp-файле. Отправлено: PavelDart от Декабрь 28, 2009, 16:30 Мне виделся только один выход - по средству создания класса в заголовочном файле, позже просто обращаться к нему из файла с реализацией. А вот про вариант предложенный break я не знал. Попробую оба.
Благодарю за ответы, наступающим новым годом :) ! |