Here, at Qt Wiki,それはそこにはショートカットはありません、あなたがheaderView自分自身をサブクラス化する必要があると言います。ここで
はそのウィキの回答をまとめたものである:
は、「現在のヘッダ内のウィジェットを挿入するAPIはありませんが、あなたは、ヘッダーに挿入するために、チェックボックスを自分でペイントすることができ
。何あなたができることは、QHeaderViewをサブクラスpaintSection()を再実装して、このチェックボックスを持ちたいセクションにPE_IndicatorCheckBoxでdrawPrimitive()を呼び出すことです。
あなたはまた順序で、チェックボックスをクリックしたときに検出するmousePressEvent()を再実装する必要がありますチーズをペイントするckedおよびunchecked状態です。
以下の例では、これを行うことができる方法を示しています
#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();
}
テーブルビューからヘッダ内のチェックボックスを呼び出すための別の方法はありませんか? –
私たちはデザインするために自分自身のチェックボックスをペイントしなければならず、テーブルビューからヘッダーから呼び出さなければなりません。ありがとう、私はチェックボックスを実装するためにこのメソッドを試してみます。 –