Russian Qt Forum
Ноябрь 01, 2024, 10:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как добавить QCheckBox в горизонтальный заголовок QTableView  (Прочитано 2451 раз)
VVN
Чайник
*
Offline Offline

Сообщений: 52


Просмотр профиля
« : Апрель 29, 2015, 22:11 »

Сделал через переопределение
Код:
class CheckBoxHeader : public QHeaderView
{
    Q_OBJECT

public:
    CheckBoxHeader(Qt::Orientation orientation, QWidget* parent = 0);
    bool isChecked() const { return isChecked_; }
    void setIsChecked(bool val);
signals:
    void checkBoxClicked(bool state);
protected:
    void paintSection(QPainter* painter, const QRect& rect, int logicalIndex) const;
    void mousePressEvent(QMouseEvent* event);
private:
    bool isChecked_;
    void redrawCheckBox();
};

Пример нашел в сети, но работает оно как то тоскливо.

Ведь можно же установить свой виджет в заголовок через setIndexWidget

сделал так
Код:
      // Получаем указатель на заголовок
      QHeaderView *header = ui->tableAlert->horizontalHeader();
      // Устанавливаем ему виджет типа QCheckBox
      header->setIndexWidget(QModelIndex().child(0, 3), new QCheckBox("test",ui->tableAlert));
Но не получается CheckBox устанавливается в самый левый угол заголовка.
Я так понимаю в setIndexWidget первым параметром нужно передать QModelIndex который указывает на нужную мне ячейку
заголовка.
То что в примере QModelIndex().child(0, 3) это одна из моих версий.
Пробовал по разному все равно CheckBox появляется только в самом левом верхнем углу заголовка.

Может есть решение.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #1 : Апрель 30, 2015, 09:51 »

не у верен, но может попробовать установить делегат для заголовка...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.