Название: [РЕШЕНО] помогите разобраться с неймспейсами (или как обвернуть ::Ui) Отправлено: unkeep от Июль 26, 2013, 09:47 хочу весь свой проект поместить в namespace TextDocumentEditor. Объясните пожалуйста, что я делаю не так.
MainWidget.h Код
MainWidget.cpp Код
ошибка: C2512: 'TextDocumentEditor::Ui::MainWidget' : no appropriate default constructor available Название: Re: помогите разобраться с неймспейсами(namespace) Отправлено: mutineer от Июль 26, 2013, 10:14 Реализация Ui::MainWidget не знает ничего про неймспейс
Название: Re: помогите разобраться с неймспейсами(namespace) Отправлено: unkeep от Июль 26, 2013, 10:19 Реализация Ui::MainWidget не знает ничего про неймспейс пробовал такTextDocumentEditor::Ui::MainWidget - тоже самое и вообще по моей логике, если я в .cpp написал using namespace TextDocumentEditor значит все определения из этого неймспейса должны быть доступны. Или не так? Название: Re: помогите разобраться с неймспейсами(namespace) Отправлено: Igors от Июль 26, 2013, 10:36 и вообще по моей логике, если я в .cpp написал using namespace TextDocumentEditor значит все определения из этого неймспейса должны быть доступны. Или не так? Так, но для тех что объявлены в namespaceКод
Название: Re: помогите разобраться с неймспейсами(namespace) Отправлено: mutineer от Июль 26, 2013, 10:39 В файле ui_MainWidget.h нет упоминаний твоего неймспейса
попробуй обернуть #include "ui_MainWidget.h" в namespace TextDocumentEditor {} Название: Re: помогите разобраться с неймспейсами(namespace) Отправлено: unkeep от Июль 26, 2013, 11:15 В файле ui_MainWidget.h нет упоминаний твоего неймспейса так - синтаксическая ошибкапопробуй обернуть #include "ui_MainWidget.h" в namespace TextDocumentEditor {} Код оборачивать в namespace TextDocumentEditor внутри ui_MainWidget.h нельзя(после пересборки сгенерируется заново) сделал так Код вместо так Код
работает, тока мне хотелось чтоб и ::Ui был внутри ::TextDocumentEditor(если мой проект входит в состав более крупного например, в котором тоже есть namespace Ui). И ещё немного не понимаю зачем строчка class MainWidget отдельно в ::Ui, а не весь class MainWidget с его структурой...( Название: Re: помогите разобраться с неймспейсами(namespace) Отправлено: Bepec от Июль 26, 2013, 12:07 Имеется ещё один способ объявления ui.
Вот к примеру мой класс Код: #ifndef DEBUGGER_H Довольно давно возникал похожий вопрос. Там и приводился ваш код (он генерится Qt creator' ом, насколько я помню). И именно из-за этого неймспейса он неудобен. Мой класс сгенерирован QtAddin и не требует никаких дополнительных телодвижений для неймспейсов. PS надеюсь я правильно понял тему. Название: Re: помогите разобраться с неймспейсами(namespace) Отправлено: kambala от Июль 26, 2013, 12:16 Там и приводился ваш код (он генерится Qt creator' ом, насколько я помню). И именно из-за этого неймспейса он неудобен. в креаторе можно настроить каким образом включать ui: агрегация (как у тебя), агрегация через указатель (как у ТС) и множественное наследование.Мой класс сгенерирован QtAddin и не требует никаких дополнительных телодвижений для неймспейсов. Название: Re: помогите разобраться с неймспейсами(namespace) Отправлено: unkeep от Сентябрь 26, 2013, 09:30 если кому то ещё интересно, то чтобы включить ::Ui(неймспейс сгенеренного скрытого класса формы) в свой неймспейс, надо при создании формы в мастере QT креатора указывать имя нового класса формы уже с неймспейсом. То есть так MyNamespace::MyWidget. Имена файлов оставить как есть(MyWidget.h/.cpp/.ui).
Тогда ::Ui уже будет обвёрнут в ::MyNamespace. Название: Re: [РЕШЕНО] помогите разобраться с неймспейсами (или как обвернуть ::Ui) Отправлено: Qlab от Декабрь 22, 2013, 22:17 Подскажите, как изменить этот код, чтоб работал, т.е. была свяЗь между ui и классом.
ошибка: C2512: 'Ui::Glass' : no appropriate default constructor available Класс, который сгенерировал креатор, такой ошибки не выдает, запускается и работает нормально. Код: #ifndef GLASS_H Код: #include "glass.h" Название: Re: [РЕШЕНО] помогите разобраться с неймспейсами (или как обвернуть ::Ui) Отправлено: gil9red от Декабрь 22, 2013, 22:40 Код: #include "glass.h" Название: Re: [РЕШЕНО] помогите разобраться с неймспейсами (или как обвернуть ::Ui) Отправлено: Qlab от Декабрь 22, 2013, 23:19 #include "ui_glass.h"
такого нет. Компилятор говорит ошибка: C1083: Cannot open include file: 'ui_glass.h': No such file or directory Название: Re: [РЕШЕНО] помогите разобраться с неймспейсами (или как обвернуть ::Ui) Отправлено: gil9red от Декабрь 22, 2013, 23:23 мос должен был для файла ui сгенерировать файлик #include "ui_<название класса>.h", без этого файла воспользоваться статично формой не выйдет :)
обычно файл генерируется в папке build-.* Может, у вас вот с таким названием "ui_Glass.h" генерируется... Название: Re: [РЕШЕНО] помогите разобраться с неймспейсами (или как обвернуть ::Ui) Отправлено: kambala от Декабрь 22, 2013, 23:25 мос этим занимается uicНазвание: Re: [РЕШЕНО] помогите разобраться с неймспейсами (или как обвернуть ::Ui) Отправлено: gil9red от Декабрь 22, 2013, 23:26 точно! :)
Название: Re: [РЕШЕНО] помогите разобраться с неймспейсами (или как обвернуть ::Ui) Отправлено: Qlab от Декабрь 23, 2013, 00:46 автоматически генерируется файл, который соответствует форме mainwindow.ui "ui_mainwindow.h" такой файл создается в папке с build. Я пытался обратиться к объекту формы из другого класса.
|