50 table_->setHorizontalHeader(
this);
53 table_->setSortingEnabled(
true);
56 sortCol_ = firstSortableSection();
57 sortOrder_ = Qt::DescendingOrder;
60 QSignalBlocker b(
this);
61 setSortIndicator(sortCol_, sortOrder_);
64 connect(
this, &QHeaderView::sectionClicked,
this,
65 &SemiSortableHeader::onSectionClicked, Qt::UniqueConnection);
142 int logicalIndex)
const override {
145 QHeaderView::paintSection(painter, rect, logicalIndex);
151 QStyleOptionHeader opt;
152 initStyleOption(&opt);
155 opt.section = logicalIndex;
157 if (
auto *m = model()) {
158 opt.text = m->headerData(logicalIndex, orientation(), Qt::DisplayRole)
161 const QVariant align =
162 m->headerData(logicalIndex, orientation(), Qt::TextAlignmentRole);
164 opt.textAlignment = Qt::Alignment(align.toInt());
166 const QVariant deco =
167 m->headerData(logicalIndex, orientation(), Qt::DecorationRole);
169 opt.icon = deco.value<QIcon>();
173 const int v = visualIndex(logicalIndex);
174 const int n = count();
176 opt.position = QStyleOptionHeader::OnlyOneSection;
178 opt.position = QStyleOptionHeader::Beginning;
180 opt.position = QStyleOptionHeader::End;
182 opt.position = QStyleOptionHeader::Middle;
184 opt.state &= ~QStyle::State_MouseOver;
185 opt.state &= ~QStyle::State_Sunken;
188 opt.sortIndicator = QStyleOptionHeader::None;
190 style()->drawControl(QStyle::CE_Header, &opt, painter,
this);