Есть следующая задача.
Все диалоги для ввода данных вызываются из главного диалога однотипно: им передаются одни и те же (их тип, а не значение ест-но) параметры, возвращаются одни и те же у всех.
Нужно для всех них поиметь общий базовый класс, чтобы из главной формы вызывать их не смотря на их суть.
Все диалоги генерятся QtDизигнером.
Придумал два подхода на решение этой задачи.
1. Множественное наследование в impl-классах дилога, но сейчас не о нем.
2. Подмена базового класса в UI-ке... в её XML-коде. Этот базовый класс наследуется от QDialog-а + в нем свой небольшой общий для всех потомков функционал унификации передачи параметров в диалоги.
Поначалу второй способ мне казался красивее...
Итак подменил я заголовок в УИшке на следующий
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
<class>LocUserEdForm</class>
<includes>
<include location="local" impldecl="in declaration">qbaseeddlg.h</include>
</includes>
<widget class="QBaseEdDlg">
Класс QBaseEdDlg имеет только конструктор и деструктор. Проект скомпилился запустился. Добавил int член класса в QBaseEdDlg и проект после компиляции стал падать во время создания этих универсальных диалогов, падал по причине Segmentation Fault.
Что за хрень? Почему? чем ему не понравились этот интовый безобидный член класса?
Заранее спасибо за советы!
P.S. Кроме того UI-шка с таким подмененным базовым классом перестала редактироваться QtDезигнером.