Сделал через переопределение
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 появляется только в самом левом верхнем углу заголовка.
Может есть решение.