Russian Qt Forum

Qt => Вопросы новичков => Тема начата: VVN от Апрель 29, 2015, 22:11



Название: Как добавить QCheckBox в горизонтальный заголовок QTableView
Отправлено: VVN от Апрель 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 появляется только в самом левом верхнем углу заголовка.

Может есть решение.


Название: Re: Как добавить QCheckBox в горизонтальный заголовок QTableView
Отправлено: Fregloin от Апрель 30, 2015, 09:51
не у верен, но может попробовать установить делегат для заголовка...