LINUX.ORG.RU

Qt собственное управление виджетами

 


0

3

QWidget parent; QWidget child(&parent);

добавляет чайлда в некую очередь потомков, что мне не нужно. Если чайлду не предоставить родителя - он не может сам себя апдейтнуть. Идея такова, что мне не нужен штатный виджетовский лайаут, у меня есть свой, который распоряжается ивентами ввода, рендерингом и прочим. Виджетов таких может быть много, к примеру - тысяча, или больше. В таких случаях оно начинает тормозить ибо обходит все виджеты после каждого ивента. В моём случае это ненужно, т.к. мой родитель обходит только те потомки, которые нужны в данный момент. С рисованием и ивентами разобрался(QWidget::render и QApplication::sendEvent), но вот заставить работать у потомков update() не получатся, если у них нет родителя. Поковырял немного сорцы Qt, но там ничего для себя не нашёл, прошу помощи.

★★★

Последнее исправление: vova7890 (всего исправлений: 1)

Виджетов таких может быть много, к примеру - тысяча, или больше.

Зачем столько в одном окне? Если это что-то вроде таблицы, то нужно использовать model/view для таких целей. Еше есть scene/view, куда можно запихать тысячу и больше своих элементов без проблем.

kamre ★★★
()
Ответ на: комментарий от kamre

Они все не отображаются одновременно. Ладно, раскрою карты :) Пишу кинетический скроллист под тачскрин для Qt4. Qml и квики не юзаю. Конечно, можно было навелосипедить с собственными виджетами под список, но охота штатный заюзать.

vova7890 ★★★
() автор топика
Ответ на: комментарий от vova7890

кинетический скроллист под тачскрин для Qt4

Матерь божья...
Тем более воспользуйся советом

то нужно использовать model/view для таких целей

zJes ★★
()
Ответ на: комментарий от zJes

В этом случае возникает несколько проблем, во первых на тачскрине за скролбары не таскают, поэтому нам нужно полное управление на виджетом(контроль ввода в т.ч.), но если влепить в список кнопку, к примеру, нажать на неё и попытаться пошевелить список - получаем фигушки. Отфильтровать ивенты полностью не получается, т.к. онные почему-то первым образом поступают в потомка. Фильтровать ивенты потомков - то ещё извращение.

vova7890 ★★★
() автор топика

Отпусти чуда трава ТС.

MikeDM ★★★★★
()
Ответ на: комментарий от kamre

Я правильно понял, что для него строится один длинный виджет из потомков, который оно скролит? Это оверхедно, имхо. Я реализовывал подобное, но не на куте, а на велосипедах для скудного эмбеда. Было что-то типа базового класса, оперирующего только понятиями «дай мне виджет под индексом я его нарисую в такой то позиции». Тащемта, это все могло быть динамическим и могло не иметь фиксированных длин. Не отображённые виджеты могли быть не выделенными вообще, я не хочу привязывать к жёсткой статике. Но что-то мне подсказывает, что без QMyMegaScrollItem не обойтись.

vova7890 ★★★
() автор топика
Ответ на: комментарий от vova7890

Понятно, откуда корни растут! Я думаю, что не стоит так заморачиваться, производительность в данном случае не особо важна, с современными устройствами. И не думай править сорцы обджекта, если нет лицензии!

Human-source
()
Ответ на: комментарий от vova7890

ипользуй модель(как уже и сказали) и можешь написать свой вьювер, а контроль над всеми элементами - это уж как реализуешь вьювер или айтем. Занесло тебя конечно

Blastbit
()
Ответ на: комментарий от Human-source

А я вот чисто из принципа, заморачиваюсь. Я пробовал qml - мне понравилось, действительно удобно. Но оверхед qml <-> cpp присутствует, производительность иногда проседает в неожиданных местах, а про память я вообще молчу.

vova7890 ★★★
() автор топика
Ответ на: комментарий от Blastbit

Да, поглядел модел-виев, вроде бы оно. Теперь осталось разобраться, как оно устроено.

vova7890 ★★★
() автор топика
Ответ на: комментарий от vova7890

оверхед qml <-> cpp присутствует

В Qt 5.2 должно стать лучше из-за V4.

tnodir
()
Ответ на: комментарий от vova7890

Надо было с этого начинать.

Ищи в яндексе QsKineticScroller и используй на здоровье.
Оно под BSD-license, так что никаких проблем быть не должно.

trex6 ★★★★★
()
Ответ на: комментарий от trex6

Да уже есть, просто мне интересно стало. Спортивный интерес :) Хочу навелосипедить, и разобраться заодно.

vova7890 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.