проблема пространства имен в заголовочном файле с двумя qt ui - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть два заголовка пользовательского интерфейса - ui_FlowChartEditor.h и ui_Notepad.h

Возникла проблема с этими кодами:

//ui_FlowChartEditor.h
namespace Ui {
    class FlowChartEditorClass: public Ui_FlowChartEditorClass {};
} // namespace Ui
//ui_Notepad.h
namespace Ui {
    class NotepadClass: public Ui_NotepadClass {};
} // namespace Ui

Пространство имен 'Ui' было продублировано, поэтому я решаю эту проблему, изменяя имя пространства имен.

следующим образом:

//ui_FlowChartEditor.h
namespace Ui_FlowChartEditor {
    class FlowChartEditorClass: public Ui_FlowChartEditorClass {};
} // namespace Ui
//ui_Notepad.h
namespace Ui_Notepad {
    class NotepadClass: public Ui_NotepadClass {};
} // namespace Ui

Работает при конфигурации отладки, но не в конфигурации выпуска.

Компилятор говорит: [ошибка C2653: 'Ui_FlowChartEditor': не является именем класса или пространства имен (компилирует исходный файл FlowChartEditor. cpp)], et c ..

Есть ли какое-нибудь решение для решения этой проблемы?

Заранее спасибо.

Решением @ zgyarmati я решил эту проблему.

Я изменил objectName в Qt Designer. enter image description here

Файл заголовка ui_ стал таким:

namespace FlowChartEditorUi {
    namespace Ui {
        class FlowChartEditorClass : public Ui_FlowChartEditorClass {};
    } // namespace Ui
} // namespace FlowChartEditorUi

Thx.

1 Ответ

1 голос
/ 24 апреля 2020

Файлы ui_*.h восстанавливаются на uic из ваших файлов форм (.ui). Вы изменили сгенерированные ui_*.h файлы только для отладочной сборки, но не для сборки выпуска, поэтому у вас есть первичные, сгенерированные c сгенерированные файлы. Вы можете изменить файлы также для сборки выпуска, но вы не должны изменять сгенерированные файлы, так как они будут перезаписаны. Чтобы установить пространство имен для вашего класса пользовательского интерфейса, при создании класса формы Designer в QtCreator укажите имя с пространством имен, например, Ui_Notepad :: NotepadClass в поле «Имя класса», и сгенерированный файл ui_*.h будет содержать это namespace.

Если у вас уже есть формы, вы также можете соответствующим образом изменить их свойство objectName в редакторе форм QtCreator.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...