Russian Qt Forum

Qt => Вопросы новичков => Тема начата: frostyland от Март 02, 2011, 16:17



Название: плагины в QtDesigner и кастинг в QUiLoader [РЕШЕНО]
Отправлено: frostyland от Март 02, 2011, 16:17
Приветствую.
При создании плагина для дизайнера возникла проблема.
Создал плагин с классом
Код
C++ (Qt)
class CSMnemoscheme : public QFrame
В дизайнере все строится отлично, затем нужно поднять полученную UI-форму в рантайме,
и проверить на
Код
C++ (Qt)
CSMnemoscheme* scm = qobject_cast<CSMnemoscheme*>(res);
Так вот:
Код
C++ (Qt)
QFrame* _fr = qobject_cast<QFrame*>(res); - OK
CSMnemoscheme* scm = qobject_cast<CSMnemoscheme*>(res);  - NOT OK (((
 
ТО есть кастинг не работает, хотя в ui все оки.
кусок UI
Код
XML
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="CSMnemoscheme" name="Form">
 <property name="geometry">
  <rect>
 
Заголовочники описания/определения CSMnemoscheme одинаковы и в плагине и в тестовой программе-загрузчике.

Это вообще можно побороть?



Название: Re: плагины в QtDesigner и кастинг в QUiLoader
Отправлено: frostyland от Март 15, 2011, 11:41
Поборол.
Перенес класс CSMnemoscheme в либу, и подключаю ее в плагине и в тестовой программе-загрузчике.
кастинг работает на ура.


Название: Re: плагины в QtDesigner и кастинг в QUiLoader [РЕШЕНО]
Отправлено: Авварон от Март 15, 2011, 16:09
Есть такая проблема не проблема - чтобы кьобжект каст работал, ф-ии кюобжекта должны быть в пределах 1й единицы компиляции (если в 2х, компилер подставляет "ближайшие" вызовы ф-ий и оно естественно не работает - получается 2 класса с одинаковым именем и 1 к другому не приводится). То есть да, надо выносить в либу.