Russian Qt Forum
Декабрь 25, 2024, 10:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вложенные поля в дизайнере для кастомного виджета  (Прочитано 4840 раз)
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« : Декабрь 08, 2009, 19:19 »

Когда-то уже поднимал эту тему - ответа не нашел

Что хочется:

Есть свой виджет - оформлен как плагин для дизайнера, его полями являются некоторые структуры тоже состоящие из полей!

Наприме все вы видели как распахивается в инспекторе объектов дизайнера подполя для поля с типом QFont - прилагаю рисунок.

Вопрос - как сделать в своем виджете такое - и получалось ли у кого нибудь? В свое время и бился бился но безрезультатно - а количество подполей тем временем у этого виджета увеличилось- и работать с ними становится все труднее - когда они не вложены друг в друга...
Хотя бы на 1 уровень вложенности перенести их...
Записан
SABROG
Гость
« Ответ #1 : Декабрь 08, 2009, 23:09 »

Обычный QTreeView. Или я прикола не понял.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Декабрь 09, 2009, 00:34 »

Цитировать
Обычный QTreeView. Или я прикола не понял.
Не понял естественно - мне нужно чтобы в дизайнере в его View-е мой компонент так красиво разворачивался!
В делфи при написании своих компонент - это легко работало - достаточно было в своей структуре также объявить подпроперти - здесь нет...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Декабрь 09, 2009, 01:08 »

Можно посмотреть на плагины Qwt, там есть вложенные поля, хотя они больше стандартные, а не пользовательские.
См. рисунок.
Это компонент QwtThermo
Записан

Юра.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #4 : Декабрь 09, 2009, 01:42 »

QBrush и QColor и у меня работают - также QFont и т.д. --- мне как раз нужно свою структуру заставить так в качестве поля разворачиваться -странно что больше никому такое не требовалось, для визуальных компонент....

Може теще какая нибудь библиотека есть где все таки была своя (не Qt-ешная структура) так заполнена...
--- о блин похоже в QwtPlot что то подобное сделано... буду смотреть и разбираться...
Оказалось обычный опять же стандартный QString Грустный

« Последнее редактирование: Декабрь 09, 2009, 02:24 от break » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Декабрь 09, 2009, 03:27 »

break, а у тебя собственная структура (тип) зарегистрирована в системе типов?
Записан

Юра.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #6 : Декабрь 09, 2009, 03:40 »

пробовал регистрировать так - не помогате... не появляется вообще проперти в дизайнере

Код:
#include <QMetaType>

struct Q_DECL_EXPORT CMyTestStruct
{
int m_A;
int m_B;
int m_C;
CMyTestStruct() {}
};

Q_DECLARE_METATYPE( CMyTestStruct );

в самом классе объявлено так:

Код:
	CMyTestStruct m_test;

Q_PROPERTY( CMyTestStruct test   READ getTest   WRITE setTest );
Q_PROPERTY( int test2   READ getTest2   WRITE setTest2 );

public:
.............................
inline CMyTestStruct  getTest() const { return m_test; }
void   setTest( CMyTestStruct test ) { m_test = test; }

inline int  getTest2() const { return 555; }
void   setTest2( int nVal ) { }

Поле test2 - которое стандартного типа int появляется и работает(аналогично работаю QFont, QString и т.д.) - поле test - которое типа CMyTestStruct не появляется в дизайнере вообще... - рисунок прилагаю

Терзают смутные сомнения что прийдется использовать вот это: QDesignerPropertySheetExtension -- найти бы рабочий пример использования, чтобы время съэкономить и понять оно или не оно... Не понятно из документации оно может только манипулировать уже существующими пропертями в дизайнере - или может создать новое проперти??? что будет если в метод indexOf передать имя несуществующего проперти - наверняка вернет "-1" - а других ф-ций типа addProperty - в этом интерфейсе управления дизайнером нет - врят ли подойдет...
« Последнее редактирование: Декабрь 09, 2009, 03:49 от break » Записан
SABROG
Гость
« Ответ #7 : Декабрь 09, 2009, 13:49 »

Вот тролль отвечает, что подобный функционал в план не входит: http://lists.trolltech.com/pipermail/qt-interest/2009-July/010659.html

Тут вообще речь о пользовательских типах в дизайнере, а уж о том, чтобы их еще как-то на подветки разбивать так это вы поторопились.

Кстати 2 файлика интересных:
tools\designer\src\lib\shared\qdesigner_propertycommand.cpp
tools\designer\src\lib\uilib\properties.cpp
Записан
Dendy
Гость
« Ответ #8 : Декабрь 09, 2009, 14:59 »

Код:
struct Q_DECL_EXPORT CMyTestStruct

Кстати, Q_DECL_EXPORT нельзя использовать в явном виде. Должен быть какой-то макрос, ссылающийся на него или на Q_DECL_IMPORT, в зависимости импортируете или экспортируете ли вы библиотеку. Но в данном случае это не критично, ибо заголовочник больше нигде как создании библиотеки не учавствует.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.