Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Flakes от Май 14, 2008, 11:15



Название: Безформенная таблица
Отправлено: Flakes от Май 14, 2008, 11:15
Не знаю как объяснить, но в общем необходимо научить QTableView, чтоб ширина каждой ячейки была уникальная, точней согласно ширине ее содержимого.

Выглядеть это должно примерно вот так:
(http://img261.imageshack.us/img261/361/tableld7.gif)

Почти как void QTableView::resizeColumnsToContents (), только этот метод делает это, взяв за минимальную ширину самую широкую ячейку.

Как это можно было бы осуществить?


Название: Re: Безформенная таблица
Отправлено: BRE от Май 14, 2008, 11:26
Не знаю как объяснить, но в общем необходимо научить QTableView, чтоб ширина каждой ячейки была уникальная, точней согласно ширине ее содержимого.

Выглядеть это должно примерно вот так:
(http://img261.imageshack.us/img261/361/tableld7.gif)

Почти как void QTableView::resizeColumnsToContents (), только этот метод делает это, взяв за минимальную ширину самую широкую ячейку.

Как это можно было бы осуществить?

Хм, наверное наследуем класс от QAbstractItemView, и руками все отрисовываем.


Название: Re: Безформенная таблица
Отправлено: EhTemka от Май 14, 2008, 11:30
Ну если уж отрисовывать "руками" то наследовать нужно QItemDelegate...


Название: Re: Безформенная таблица
Отправлено: Flakes от Май 14, 2008, 11:42
Ну если уж отрисовывать "руками" то наследовать нужно QItemDelegate...

спасибо, кажется то что надо...


Название: Re: Безформенная таблица
Отправлено: Flakes от Май 14, 2008, 23:33
немного запутался, через void QItemDelegate::paint () я могу управлять отрисовкой содержимого ячейки, а что отрисовывает саму ячейку...

поправьте меня плиз :-[


Название: Re: Безформенная таблица
Отправлено: EhTemka от Май 16, 2008, 12:16
У тебя таблица должна быть стической или динамической (то бишь обновлятся постоянно)?

И вообще мне кажется что реализовать с помощью QAbstractItemView это довольно проблематично(хотя могу и ошибаться)...

Попробуй капнуть в сторону QGraphicsScene/QGraphicsView


Название: Re: Безформенная таблица
Отправлено: Tonal от Май 16, 2008, 18:20
Мне кажется ошибаешься.
Посмотри хотя бы $(QTDIR)/examples/itemviews/chart
Там и справа и слева наследники QAbstractItemView...


Название: Re: Безформенная таблица
Отправлено: EhTemka от Май 16, 2008, 20:12
Мне кажется ошибаешься.
Посмотри хотя бы $(QTDIR)/examples/itemviews/chart
Там и справа и слева наследники QAbstractItemView...

Посмотрел пример... Тут четь ли не весь AbstractItemView переписан. Не думаю что это проще чем QGraphicsScene/QGraphicsView. Хотя всё зависит от конкретной задачи


Название: Re: Безформенная таблица
Отправлено: Flakes от Май 19, 2008, 15:10
Ясно, все куда сложней чем кажется. Я хотел было наследовать TableView и из соурсов перепахать какой нить paint метод под себя или что то в этом роде.

P.S. таблица динамическая.

Немножко подробней объясню . Мне функциональность таблицы не нужна, просто когда попал мне в руки проект - уже с таблицей это было реализовано. Я думаю просто сделаю это простым RichText. Главное чтоб выводилось все сплошняком, как будто одним предложением.


Название: Re: Безформенная таблица
Отправлено: Tonal от Май 20, 2008, 11:48
Ну в html это отформатировать проблем как я понимаю быть не должно:
Внешняя таблица с одним столбцом и для каждой строко своя внутренняя табличка с нужным форматированием.
Эжели не нужно редактирование и всякое выделение - можно QTextBrowser использовать.
А если нужно - надо думать...
Может оказаться, что наследование от QAbstractItemView наиболее удобный и простой вариант.


Название: Re: Безформенная таблица
Отправлено: Flakes от Май 20, 2008, 16:36
Эжели не нужно редактирование и всякое выделение - можно QTextBrowser использовать.
А если нужно - надо думать...
Может оказаться, что наследование от QAbstractItemView наиболее удобный и простой вариант.

Пока нет необходимости редактирования, но может понадобиться в дальнейшем, и я бы срадостью сохранил бы таблицу. Хорошо, пускай я наследую QAbstractItemView, куда дальше копать? Я так понимаю мне нужно переопределить какой-то public метод, а именно тот который столбик рисует, чтоб он брал не общий size, а уникальный для каждой ячейки, но в исходниках я ничего не нашел.

P.S. все таки я еще нуб :)

P.S.S. я еще покапался, вроде QHeader отвечает за отрисовку всяких *Item*View