crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
Гость_0xFF_*
сообщение 9.11.2007, 21:32
Сообщение #1





Гости








    


День добрый :)

Пишу программу, очень нужен property browser, кто-нибудь реализовывал такой компонент на Qt? С чего начать? Видел такой в Qt Solutions, но они не дают его даже для разработки некоммерческой/open-source проги :(( Думал может кто-нить в сети расшарил(все равно никакой коммерческой выгоды с проги не буду иметь, да и для себя пишу :) ) - тоже нету :(. Один выход - писать самому... может кто поможет чем-нить? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.11.2007, 22:02
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


В чем именно проблема, в реализации?
Просто одно дело, когда есть какие-то проблема при реализации, другое, когда ищешь готовое решение.

Готового решения кроме как в Qt Solutions я не видел.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.11.2007, 22:32
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Вот есть статья как создать свой The Property Browser Framework

Думаю по ней, будет понятно, с чего начать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 11.11.2007, 14:06
Сообщение #4





Гости








    


Хорошо, задам конкретный вопрос :) Можно ли в QTreeWidget вставлять вместо текста виджеты? Т.е. имеем две колонки(Property, Value) в колонке Property - имя свойства, а в колонке Value - виджет в зависимости от типа свойства(combo box, spin box и т.д.). Такое возможно? И как это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 11.11.2007, 14:45
Сообщение #5





Гости








    


Так, вопрос с виджетами снят, все оказалось проще чем я думал :). Теперь не могу скрыть полоски которые показывают иерархию(не знаю даже как их назвать :)), находятся слева от дерева, хочу оставить только крестики рядом с разворачивающемися элементами...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.11.2007, 15:33
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Может QTreeWidgetItem::setChildIndicatorPolicy c параметром? Просто по умолчанию устанавливается QTreeWidgetItem::ShowForChildren, можно попробовать с QTreeWidgetItem::DontShowIndicatorWhenChildless
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.11.2007, 15:53
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


А вообще, я где-то видел на vb + qt реализацию property browser, поискать нужно только, как пример как что реализовать думаю подойдет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 11.11.2007, 15:57
Сообщение #8





Гости








    


Не помогло. Вообще ничего не происходит с любыми параметрами :(. Написал setRootIsDecorated( false ), но теперь не видно даже крестиков перед разворачивающемися элементами =\
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.11.2007, 16:09
Сообщение #9


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Нашел пример: Value Browser 3.

Ща гляну, что там с полосками...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 11.11.2007, 16:33
Сообщение #10





Гости








    


Классный пример :) Только вот судя по скрину у них тоже есть эти вертикальные соеденители элементов =(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.11.2007, 16:37
Сообщение #11


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Угу, я тоже это заметил :)
У меня пока комп чистый, Qt пока не скомпилил, как скомпилю попробую как и что, а то так пока не понятно как и что. :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 11.11.2007, 17:21
Сообщение #12





Гости








    


Что-то мне кажется, что от вертикальных линий не избавиться =(.

Можно ли присвоить отдельным элементам различные QItemDelegate? И как? Просто не знаю как по-другому нарисовать группы, хочу группировать с-ва в группы, а заголовок группы рисовать, например, с серым фоном(как на скрине)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.11.2007, 17:27
Сообщение #13


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


setItemDelegate(new TValueItemDelegate(this)); ???

из примера Value Browser 3.

Сообщение отредактировал ViGOur - 11.11.2007, 17:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 11.11.2007, 17:41
Сообщение #14





Гости








    


setItemDelegate установит делегат для всех элементов, а мне нужно только для тех, которые свойства группируют
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.11.2007, 20:04
Сообщение #15


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Этот вопрос тоже требует времени для ответа, пока не знаю как... :) Но интересно узнать.

Но если грубо, то можно для каждой группы сделать свой виджет QTreeWidget и для него вызывать setItemDelegate, но думаю есть более красивый способ.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 11.11.2007, 20:28
Сообщение #16





Гости








    


Может можно как-то по-другому заменить код отрисовки элементов?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.11.2007, 23:35
Сообщение #17


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


С линиями, думаю, можно обычной вставкой иконок для рутовых эелементов.
А вот с setItemDelegate пока не знаю, буду смотреть...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Admin
  опции профиля:
сообщение 12.11.2007, 9:15
Сообщение #18


Администратор
****

Группа: Администратор
Сообщений: 646
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

Спасибо сказали: 17 раз(а)




Репутация:   2  


Цитата(Гость @ 11.11.2007, 17:21) *
Можно ли присвоить отдельным элементам различные QItemDelegate? И как? Просто не знаю как по-другому нарисовать группы, хочу группировать с-ва в группы, а заголовок группы рисовать, например, с серым фоном(как на скрине)

void QAbstractItemView::setItemDelegateForRow ( int row, QAbstractItemDelegate * delegate )
или
void QAbstractItemView::setItemDelegateForColumn ( int column, QAbstractItemDelegate * delegate )

на выбор :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.11.2007, 10:05
Сообщение #19


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Чтобы не рисовались линии, тебе нужно переопределить:
void QTreeView::drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const;

Если у тебя не получиться, то как время будет покажу как...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 12.11.2007, 14:41
Сообщение #20





Гости








    


Admin
ViGOur
Спасибо! Щас буду пробовать :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Admin
  опции профиля:
сообщение 12.11.2007, 14:45
Сообщение #21


Администратор
****

Группа: Администратор
Сообщений: 646
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

Спасибо сказали: 17 раз(а)




Репутация:   2  


Если доделаешь, то может выложишь исходники? Я их на сайт повешу.
Просто сейчас намечаю раздельчик в котором будут лежать исходики и краткое описание к ним... :)

p.s. если решишь выложить, то авторство укажи. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 12.11.2007, 15:58
Сообщение #22





Гости








    


ViGOur
>>Чтобы не рисовались линии, тебе нужно переопределить:
>>void QTreeView::drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const;

Вот ещё метод :) http://doc.trolltech.com/4.3/stylesheet-examples.html в самом конце
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
0xF
  опции профиля:
сообщение 12.11.2007, 16:02
Сообщение #23


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


>>Если доделаешь, то может выложишь исходники? Я их на сайт повешу.
ОК :) У меня уже есть рабочий вариант, но я ещё хочу немного доработать функционал :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.11.2007, 16:34
Сообщение #24


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Гость @ 12.11.2007, 15:58) *
ViGOur
>>Чтобы не рисовались линии, тебе нужно переопределить:
>>void QTreeView::drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const;

Вот ещё метод :) http://doc.trolltech.com/4.3/stylesheet-examples.html в самом конце
Мда, а о таблицах стилей я не подумал, хотя перевожу их... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
0xF
  опции профиля:
сообщение 24.11.2007, 16:12
Сообщение #25


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Давненько меня тут не было :)

Вобщем сделал я Property Grid, заточенный под мои нужды, правда, немного порочный :) Если надо, могу выложить код, только куда?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 24.11.2007, 17:39
Сообщение #26


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


А качестве аттача сюда можно выложить... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
0xF
  опции профиля:
сообщение 24.11.2007, 18:14
Сообщение #27


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


// ** Пример использования
class cSomeClass {
private:

    float         fProperty;
    int           iProperty;
    float         vProperty[2]; // двухмерный вектор
    byte          cProperty[4]; // цвет
    std::string   sProperty;
    bool          bProperty;

    ...

public:
    ...
    // ** Основной порок - кривоватая система для описания свойств объекта, не было времени сделать что-нить более толковое :)
    QPropertyGrid::sPropertyDef* CreatePropertyDef( void ) {
         QPropertyGrid::sPropertyDef *def = new QPropertyGrid::sPropertyDef[ 7 ];

         def[0].name   = "Float property";
         def[0].type     = QPropertyGrid::T_FLOAT;
         def[0].pointer = &fProperty;
         def[0].minf     = -10.0f;
         def[0].maxf    = 10.0f;

         def[1].name   = "Int property";
         def[1].type     = QPropertyGrid::T_INT;
         def[1].pointer = &iProperty;

         def[2].name   = "2D Vector";
         def[2].type     = QPropertyGrid::T_VECTOR2;
         def[2].pointer = vProperty;
         memcpy( def[2].captions.xCaption, "min", 4 );   // ** Это вообще жуть :)
         memcpy( def[2].captions.yCaption, "max", 4 );

         def[3].name   = "Color property";
         def[3].type     = QPropertyGrid::T_COLOR;
         def[3].pointer = cProperty;

         def[4].name   = "String property";
         def[4].type     = QPropertyGrid::T_STRING;
         def[4].pointer = &sProperty;

         def[5].name   = "Bool property";
         def[5].type     = QPropertyGrid::T_BOOL;
         def[5].pointer = &bProperty;

         def[6].type     = QPropertyGrid::T_TOTAL; // Конец описания
    }

    ...
};

// ** Собственно связывание QPropertyGrid с объектом
QPropertyGrid:::sPropertyDef *def = someClassObject->CreatePropertyDef();
propertyGrid->SetObject( def );

delete[]def;


Код
Прикрепленный файл  QPropertyGrid.zip ( 8.78 килобайт ) Кол-во скачиваний: 902
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 24.11.2007, 18:42
Сообщение #28


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Admin @ 12.11.2007, 14:45) *
p.s. если решишь выложить, то авторство укажи. :)
;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Admin
  опции профиля:
сообщение 24.11.2007, 19:08
Сообщение #29


Администратор
****

Группа: Администратор
Сообщений: 646
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

Спасибо сказали: 17 раз(а)




Репутация:   2  


спасибо, выложу...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Admin
  опции профиля:
сообщение 24.11.2007, 19:46
Сообщение #30


Администратор
****

Группа: Администратор
Сообщений: 646
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

Спасибо сказали: 17 раз(а)




Репутация:   2  


Выложил: Property browser
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Admin
  опции профиля:
сообщение 26.11.2007, 14:08
Сообщение #31


Администратор
****

Группа: Администратор
Сообщений: 646
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

Спасибо сказали: 17 раз(а)




Репутация:   2  


Тему разделил, сообщения перенесены в новую тему: Property Browser (PropertySheet)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.5.2025, 23:11