Название: Что такое ui в Qt Creator Отправлено: lenny от Февраль 09, 2011, 16:11 Здравствуйте! Подскажите, что такое ui? Создаю форму и класс в Creator-е. Хочется иметь доступ к ui как к public. Даю доступ public, не работает, причем в creator-е в вываливающемся списке после ввода селектора класса ui все равно рисуется с замком, если закрыть проект и снова открыть ui без замка, но доступа нет. Делал метод возвращающий указатель, его успешно получаю, пользоваться не могу.
Код: #include <QDialog> //Это создает Creator Хотелось бы иметь такую возможность Dialog d; d.ui->бла-бла-бла. Код: #include <dialog.h> Пошел путем наследования Код: #include <QDialog> Работает! Но при изменении формы глючит, приходится пересобирать проект. Название: Re: Что такое ui в Qt Creator Отправлено: Странник от Февраль 09, 2011, 16:46 Борис, ты не прав! Требование инкапсуляции еще никто не отменял)
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 09, 2011, 16:58 Данный случай, правилам инкапсуляции С++ противоречит, или у меня пробелы в знаниях.
public: explicit Dialog(QWidget *parent = 0); ~Dialog(); Ui::Dialog *ui; А случай с наследованием показывает, что члены Ui::Dialog открыты. Название: Re: Что такое ui в Qt Creator Отправлено: smackthat от Февраль 12, 2011, 16:46 Создавай элементы gui вручную и меняй их как хочешь. На примере Paintings -> basic drawing можно посмотреть.
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 13, 2011, 12:38 Руками(кодом) начинал изучая qt, хочется более быстрой разработки с теми же возможностями. В принципе вариант с наследованием ui меня полностью устраивает. Странно что ui в виде объекта странно себя ведет. Подниму немного знания C++, может чего не понимаю.
Название: Re: Что такое ui в Qt Creator Отправлено: b-s-a от Февраль 14, 2011, 23:24 ui - это лишь обертка для набора элементов, генерируемых на этапе компиляции из формы дизайнера. Использовать ее извне класса формы - моветон. Смотри, если сделать как ты хочешь, при изменении имени элемента в форме, после этого придется менять в 10 файлах. В одном же проще! Более того, посмотри как используется инкапсуляция в самой Qt. Ты где видел, чтобы у стандартного класса можно было получить доступ к ui?!? Нет такого. Вот и ты пиши. Придумай интерфейс (API) формы: что на входе, что на выходе. А все остальное инкапсулируй внутри класса формы.
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 15, 2011, 11:08 Спасибо! Действительно не красиво получается. На сам qt для мне весьма полезно посмотреть. А с объектом ui все в порядке, зря я на него нагнал, не знаю что там было, тот проект я удалил.
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 15, 2011, 12:49 ui - это лишь обертка для набора элементов, генерируемых на этапе компиляции из формы дизайнера. Как-то не так я qt creator изучать стал, может delphi или .net подействовали. Вначале не мог найти файлы ui_....h подумал, что они не существуют или еще чего. Почитал теории, нашел ui_..h. Теперь все просто и понятно.Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 17, 2011, 11:17 Здравствуйте! Возник глупый вопрос. Если у меня на форме имеется виджеты для которых необходимо использовать drag and drop, то следует их создавать вне дизайнера? Чтоб переопределить/определить функции dragEnterEvent и т.д. Или есть какой нибудь другой способ? Или сразу делать заготовку формы в дизайнере, брать файл ui_....h и забивать на дизайнер? Вроде можно и так и сяк. Какой подход лучше реализовывать?
Название: Re: Что такое ui в Qt Creator Отправлено: Авварон от Февраль 17, 2011, 11:49 использовать "promote to..." в дизайнере
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 17, 2011, 13:22 использовать "promote to..." в дизайнере Не нашел "promote to..." у меня все на русском, а что это?Название: Re: Что такое ui в Qt Creator Отправлено: ruzik от Февраль 17, 2011, 13:27 Преобразованные виджеты
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 17, 2011, 13:40 Поковырялся с преобразованием, ничего пока не получилось. Насколько понял, должен получится класс унаследованный от преобразованного виджета, записаться в отдельный файл, включиться в ui_...h, а потом в классе ui_тырыпыры создаться объекты этих классов. Вот тока файлов преобразованных я не нашел и creator тоже. Куда они выгружаются ???
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 17, 2011, 13:48 Поиск по диску ничего не дал ???, ну и фиг с ним. Руками не сложно написать.
Название: Re: Что такое ui в Qt Creator Отправлено: b-s-a от Февраль 17, 2011, 21:07 Ты видимо не очень понял, что такое "promote to"... Ты пишешь свой виджет, например, MySuperComboBox, наследник QComboBox. Чтобы не создавать его на форме ручками, ты кидаешь QComboBox, жмешь правой кнопкой мыши и выбираешь пункт "Преобразовать в". Затем в появившемся окне пишешь MySuperComboBox, выбираешь базовый виджет (в данном случае QComboBox), проверяешь название включаемого хидера, при необходимости включаешь галочку "глобальное включение" (это чтобы инклюды были с угловыми скобками, а не кавычками; в случае, если виджет находится в проекте, достаточно кавычек) и жмешь "добавить"...
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 18, 2011, 09:34 Видать все равно не понимаю ??? Думал(и до сих пор думаю), что получу пользовательский класс-наследник класса преобразованного виджета.
Название: Re: Что такое ui в Qt Creator Отправлено: b-s-a от Февраль 18, 2011, 12:31 нет. дизайнер вообще за код не отвечает. Он лишь генерирует XML файл с расширением ui, в котором хранится набор объектов с измененными атрибутами. А операция "promote to" позволяет переложить на ui функцию создания на окне виджетов, отличных от стандартных. Проще говоря, если ты сделаешь то, что я описал в предыдущем посте, то в ui добавится информация, что на самом деле виджет должен быть класса MySuperComboBox, а uic ("компилятор" ui -> _ui.h) вместо new QComboBox, сделает new MySuperComboBox. ВСЕ! Больше отличий нет.
Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 18, 2011, 13:30 Спасибо!!! Понял :) Что-то я все не стой стороны на этот Qt creator смотрю.
Название: Re: Что такое ui в Qt Creator Отправлено: ruzik от Февраль 18, 2011, 14:01 Спасибо!!! Понял :) Что-то я все не стой стороны на этот Qt creator смотрю. Нет на Creator вы с той стороны смотрите-это IDE, вы не с той стороны на дизайнера смотритеНазвание: Re: Что такое ui в Qt Creator Отправлено: lenny от Февраль 18, 2011, 17:34 Нет на Creator вы с той стороны смотрите-это IDE, вы не с той стороны на дизайнера смотрите Точно дизайнер, он не так и плох, все довольно логично.Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Март 02, 2011, 22:01 Появилась еще одна непонятка. Иногда, после долгих манипуляций в дизайнере, объекты от ново-добавленных виджетов не увидеть в вываливающемся списке редактора кода при вводе селектора класса(типа ui. или ui->). Это не критично, но как напасть какая то. У меня это с DirectX6 в VS2001 началось, и во вех IDE это преследует.
Название: Re: Что такое ui в Qt Creator Отправлено: Sahab от Март 03, 2011, 09:58 сохраняй ui файл. Креатор обновит модель кода.
если не поможет = попробовать скомпилировать, чтоб uic создал хидер. Название: Re: Что такое ui в Qt Creator Отправлено: lenny от Март 04, 2011, 08:18 Спасибо! Помогает удаление и создание снова хедеров.
|