Можно ли использовать виджет в качестве элемента |
Здравствуйте, гость ( Вход | Регистрация )
Можно ли использовать виджет в качестве элемента |
wiz29 |
17.8.2010, 16:54
Сообщение
#1
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Использовал ли кто либо QWidget в качестве элемента QTreeWidget.
Ограничена ли функциональность виджета QWidget, как объекта при таком подходе (т.е. полноценным ли виджетом он остается при добавлениие его в QTreeWidgetItem: есть ли обработка стандартных сообщений или же никаких eventов не получает кр paintEvent) Просто сейчас стою перед дилемой использовать виджет или "корячиться" с самодельным элементом для дерева. |
|
|
Litkevich Yuriy |
17.8.2010, 17:04
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Алексей1153 |
17.8.2010, 17:17
Сообщение
#3
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
wiz29 |
18.8.2010, 9:00
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Меня смутила вот эта строка из документации (void QTreeWidget::setItemWidget ( QTreeWidgetItem * item, int column, QWidget * widget )) "This function should only be used to display static content in the place of a tree widget item. If you want to display custom dynamic content or implement a custom editor widget, use QTreeView and subclass QItemDelegate instead." Все нормально работает, всем спасибо тему можно закрывать |
|
|
Litkevich Yuriy |
18.8.2010, 9:18
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
оговорка правильная, QTreeView + делегат, будут гибче.
|
|
|
wiz29 |
18.8.2010, 9:49
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Юрий, а чем гибче? Просто у меня задача сделать Item с кнопками картинками, причем расположение их может варьироваться при пожелании заказчика, поэтому использование виджета, как мне кажется более вариабельно.
|
|
|
Litkevich Yuriy |
18.8.2010, 10:46
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Юрий, а чем гибче? почитай про модель-представление-делегат. Виджет (QTreeWidget) просто объединяет в себе все три компонента, в заранее определённом и неизменяемом виде.
|
|
|
wiz29 |
18.8.2010, 10:50
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
ага, прочел, виджет всетаки не катит, делаем через делегатов. Вообще поэкспериментировав с простой установкой виджета в я чейку итема, понял, что лучше вообще так не делать: рушит лайауты, сегналы к/из виджета проходят через известное всем место.
спасибо за информацию всем |
|
|
Алексей1153 |
18.8.2010, 10:53
Сообщение
#9
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
wiz29 |
18.8.2010, 12:26
Сообщение
#10
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
есть класс виджета MyWidget. (выдирать код виджета не вижу смысла, скажу тольчто там несколько лейаутов и несколько контролов)
//Это не оригинальный код на 100% //тут пример использования мной функциональности QTreeWidget QTreeWidget* pTree; //инициализацию свойств опущу... (тк делаю через дизайнер) pTree->setColumnCount(1); pTree->setColumnWidth(200); .... QTreeWidgetItem* pItem(new QTreeWidgetItem); pTree->addTopLevelItem(pItem); MyWidget* pWidget(new MyWidget); pTree->setItemWidget(pItem, 0, pWidget); .... вот такого типа код Юрий, хотел спросить. Делегат конечно решит многие проблемы (он решит все проблемы). Но как бы не охота писать отрисовку итема в паитере делегата (на мой взгляд это гемор). Можно ли как нибудь использовать готовый виджет? (не только для редактирования, но и при отображении) |
|
|
Текстовая версия | Сейчас: 1.12.2024, 14:37 |