Russian Qt Forum
Декабрь 23, 2024, 18:22
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Можно ли сделать тривьюху без наследования?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Можно ли сделать тривьюху без наследования? (Прочитано 2761 раз)
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Можно ли сделать тривьюху без наследования?
«
:
Ноябрь 14, 2010, 00:21 »
Мне хочется сделать виджет древесной структуры (то есть QTreeView в нем будет), однако внешнее АПИ не должно предоставлять доступ ко всем ф-иям QTreeView. Примерное решение - отнаследоваться от QAbstractScrollArea, хранить указатель на QTreeView в себе и перебрасывать виртуал методы скроллареи на вьюху. Однако тут видимые косяки как минимум косяк с фокусом - он будет на внутреннем виджете, а не на внешнем. Можно ли это как-то обойти? Если запретить фокус полиси для вьюхи и пробросить keyBoardEvent на нее, то она будет как бы "не в фокусе" - серая - тоже нехорошо.
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Можно ли сделать тривьюху без наследования?
«
Ответ #1 :
Ноябрь 14, 2010, 00:50 »
И для чего такой изврат?
setFocusProxy?
Записан
Qt 5.11/4.8.7 (X11/Win)
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Можно ли сделать тривьюху без наследования?
«
Ответ #2 :
Ноябрь 14, 2010, 01:46 »
Вау, не знал, спасибо:) А еще косяки могуть быть, помимо мильена проброса методов?
Записан
kirill
Гость
Re: Можно ли сделать тривьюху без наследования?
«
Ответ #3 :
Ноябрь 15, 2010, 11:00 »
Сделать защищенное наследование
class TV : protected QTableView
{
public:
TV(){}
};
попытка использовать
TV tv;
tv.rowAt(0);
1>test.cpp(156) : error C2247: 'QTableView::rowAt' not accessible because 'TV' uses 'protected' to inherit from 'QTableView'
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Можно ли сделать тривьюху без наследования?
«
Ответ #4 :
Ноябрь 15, 2010, 11:11 »
Ага, а еще нам его не дадут положить в лайаут, тк QWidget - "недостижимый предок"
Вообще отнаследовался от QWidget - у скроллареи нет полезных паблик методов и положил вьюху на этот виджет. Фокус поправил, как посоветовали. Вроде косяков пока нет.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...