Здравствуйте, гость ( Вход | Регистрация )
Maksus | Дата 9.5.2009, 13:07 |
У варианта "с указателем" есть плюс - можно отложить на время создание дочерних элементов, но при этом пользоваться сигналами и слотами. Скажем вывести диалог авторизации и при правильном ответе начать формировать главную форму. Спасибо! Какие еще есть плюсы и минусы разных методов? |
|
SABROG | Дата 9.5.2009, 10:11 |
У варианта "с указателем" есть плюс - можно отложить на время создание дочерних элементов, но при этом пользоваться сигналами и слотами. Скажем вывести диалог авторизации и при правильном ответе начать формировать главную форму. |
|
Kagami | Дата 9.5.2009, 8:23 |
Ну с одной стороны это правильно - реализуется принцип инкапсуляции. Если нужен доступ - либо пишем соответствующий метод, либо через сигналы/слоты. Необходимость что-то менять извне формы возникает очень редко и легко решается этими двумя способами. | |
Maksus | Дата 9.5.2009, 1:47 |
На мой взгляд лучше всего наследование.. тоесть: class MainWindow : public QMainWindow, public Ui::MainWindow { ... }; в конструкторе потом просто setup(this) и в принципе всё... через this обращаться к любому элементу UI-шки... ну по крайней мере мне так удобнее=) Да но обратиться к элементам экземпляра такого класса извне неудается, даже когда идет public наследование по обоим предкам (Creator формирует наследование public QWidget, private Ui::Form |
|
defnull | Дата 9.5.2009, 0:38 |
На мой взгляд лучше всего наследование.. тоесть: class MainWindow : public QMainWindow, public Ui::MainWindow { ... }; в конструкторе потом просто setup(this) и в принципе всё... через this обращаться к любому элементу UI-шки... ну по крайней мере мне так удобнее=) |
|
Maksus | Дата 8.5.2009, 23:55 |
Применив телепатию, понял следующее. Вопрос заключается в том, какой подход лучше - описанный в книге Жасмин Бланшет: Раскрывающийся текст
или подход, который предлагается QtCreater'ом при создании нового проекта: Раскрывающийся текст
да, да, да плюс есть еще третий, как ваш второй, только ui создается статически. Речь не идет о новом проекте в Creator, там выбора нет, да и все елементы доступны через *ui. Попробуйте в чистый проект от Creator добавить форму класса (там есть такой выбор, и это не тоже самое, что просто форма). И тогда если нажмете more в мастере то увидите те самые варинты о которых выше написано. Собсно вопрос в том, какой вариант лучше и как же всетаки получить доступ к элементам этого новосозданного класс (с формой) и базового, основного (main). из базового, основного (main). |
|
Kagami | Дата 8.5.2009, 23:38 |
Применив телепатию, понял следующее. Вопрос заключается в том, какой подход лучше - описанный в книге Жасмин Бланшет: Раскрывающийся текст
или подход, который предлагается QtCreater'ом при создании нового проекта: Раскрывающийся текст
|
|
SABROG | Дата 8.5.2009, 23:25 |
именно классов, а не просто форм Что такое "просто форма" и что такое "класс формы"? Я знаю лишь, что любой виджет, даже созданный через дизайнер - является классом. А у любого класса есть поля со свойствами и дочерними элементами. Но что-то мне подсказывает, что затык с пониманием произошел из-за ui компилятора, который делает всю работу за кадром (это к теме о ui_*.h файлах). |
|
Maksus | Дата 8.5.2009, 23:16 |
Немогу понять как осуществляется доступ к элементам (виджетам) дочернего окна созданного с помощью Классов форм (именно классов, а не просто форм). Какой способ встраивания Ui и для каких случаев лучше выбрать aggregation, aggregation as pointer или multiple inheritance? В документации ничего нет про это, а в книгах более старые версии Qt тогда еще небыло QtCreator`а и готовых классов форм. | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 1:14 |