Here, at Qt Wiki, es sagt, dass es keine Abkürzung für sie ist, und Sie haben zu Unterklasse headerView selbst.
Hier eine Zusammenfassung dieser Wiki Antwort:
„Derzeit gibt es keine API-Widgets in der Kopfzeile einzufügen, aber Sie können das Kontrollkästchen sich um malen es in den Header einzufügen
. Was Sie tun können, ist QHeaderView Unterklasse, reimplementieren paintSection() und dann drawPrimitive() mit PE_IndicatorCheckBox in dem Abschnitt in dem Sie diese Checkbox haben wollen.
würden Sie auch die mousePressEvent() reimplementieren müssen, um zu erkennen, wenn die Checkbox angeklickt wird, um um den che zu malen gesperrte und ungeprüfte Zustände.
Das folgende Beispiel zeigt, wie dies getan werden kann:
#include <QtGui>
class MyHeader : public QHeaderView
{
public:
MyHeader(Qt::Orientation orientation, QWidget * parent = 0) : QHeaderView(orientation, parent)
{}
protected:
void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const
{
painter->save();
QHeaderView::paintSection(painter, rect, logicalIndex);
painter->restore();
if (logicalIndex == 0)
{
QStyleOptionButton option;
option.rect = QRect(10,10,10,10);
if (isOn)
option.state = QStyle::State_On;
else
option.state = QStyle::State_Off;
this->style()->drawPrimitive(QStyle::PE_IndicatorCheckBox, &option, painter);
}
}
void mousePressEvent(QMouseEvent *event)
{
if (isOn)
isOn = false;
else
isOn = true;
this->update();
QHeaderView::mousePressEvent(event);
}
private:
bool isOn;
};
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QTableWidget table;
table.setRowCount(4);
table.setColumnCount(3);
MyHeader *myHeader = new MyHeader(Qt::Horizontal, &table);
table.setHorizontalHeader(myHeader);
table.show();
return app.exec();
}
Es gibt keine alternative Methode das Kontrollkästchen in der Kopfzeile von Tabellenansicht für den Aufruf? –
Wir müssen die Checkbox selbst entwerfen und aus der Kopfzeile aus der Tabellenansicht aufrufen. Danke, ich werde diese Methode zur Implementierung von Checkbox ausprobieren. –