Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: tericka от Май 12, 2010, 13:32



Название: Вопрос по QTableWidget : как добавить checkbox в horizontalHeader?
Отправлено: tericka от Май 12, 2010, 13:32
Собственно, уже несколько дней бьюсь над задачкой - нужно реализовать функциональность "пометить  все" для одной из колонн в имеющемся QTableWidget.
Эта колонка сама состоит сплошь из чекбоксов, поэтому требуется добавить в horizontalHeader таблицы так называемый "главный" checkbox  :), который бы позволял одновременно выделять галочкой все строки, при нажатии на него.
Я отталкивалась от этого решения, которое мне казалось наиболее простым :

Код:
QTableWidgetItem* item = new QTableWidgetItem("Check all");
item->setCheckState(Qt::Unchecked);
table->setHorizontalHeaderItem(0, item);

Но, к сожалению, никакой галочки в моем horizontalHeader так  не проявилось.
Не могли бы вы помочь с разрешением такой проблемки, заранее спасибо.


Название: Re: Вопрос по QTableWidget : как добавить checkbox в horizontalHeader?
Отправлено: crossly от Май 12, 2010, 13:35
воспользуйся поиском по форуму .... тема не один раз подымалась...


Название: Re: Вопрос по QTableWidget : как добавить checkbox в horizontalHeader?
Отправлено: GreatSnake от Май 12, 2010, 14:17
Не получится, т.к. QHeaderView не поддерживает Qt::CheckStateRole.
Я делал в Qt багтрекер запрос насчёт этого, но тролли почему-то его закрыли - типа Out of scope.
Единственное решение - перегрузить QHeaderView и самому рисовать checkbox и обрабатывать нажатия мыши - вообщем довольно-таки геморно :(

В ассистенте, кстати, про это так и написано:
Цитировать
Not all ItemDataRoles will have an effect on a QHeaderView. If you need to draw other roles, you can subclass QHeaderView and reimplement paintEvent(). QHeaderView respects the following item data roles: TextAlignmentRole, DisplayRole, FontRole, DecorationRole, ForegroundRole, and BackgroundRole.


Название: Re: Вопрос по QTableWidget : как добавить checkbox в horizontalHeader?
Отправлено: tericka от Май 12, 2010, 15:05
Спасибо, я как раз это и подозревала  :( Просто надеялась на лучшее, как говорится...
Собственно, после поиска по форуму и задалась этим вопросом - а поддерживает ли QHeaderView эти checkStates или же нет?
Теперь, после вашего подтвержения, что увы, CheckStateRole не поддерживается, то думаю, да, придется таки рисовать и подключать к cellClicked.
Но странно, что qt'ешники именно так отреагировали на ваш запрос, GreatSnake, все таки он не такой уж редкий.