3

void setSelectionBehavior ( QAbstractItemView::SelectionBehavior 動作 )

この関数は、項目の選択、行の選択、セルの選択の 3 つの値のいずれかを受け入れます。

質問:

セルをクリックすると選択され、行インデックスをクリックすると行が選択されますが、列ヘッダーをクリックすると列全体が選択されません。私が理解しているように、これはこの機能を使用して行うことはできません。

が設定されているときとまったく同じように動作するようにテーブルビューが必要SelectionBehavior::selectItemsです。

ただし、ユーザーがヘッダーをクリックすると、列は選択されません。

列の選択を無効にすることを考えてQHeaderViewいますが、方法が見つかりませんか?

4

1 に答える 1

3

私のアプリケーションから:

    // get header from QTableView tableView (replace with your widget name)
    QHeaderView *header = new QHeaderView(Qt::Horizontal, tableView);
#if QT_VERSION < 0x50000
// Qt 4.8.1
    header->setResizeMode(QHeaderView::ResizeToContents);
#else
// Qt 5.2.0
    header->setSectionResizeMode(QHeaderView::ResizeToContents);
#endif
    header->setHighlightSections(false); // this is what you want

setHighlightSections(bool) スロットは Qt 4 および Qt 5 で有効です

編集: 不注意ですみません!これは、SingleSelection で SelectRows または SelectItems を使用する場合にのみ機能します。qheaderview.cppソースとqtableview.cpp、スロット voidQHeaderView::mousePressEvent(QMouseEvent *e);と で証拠を見つけることができますvoidQTableViewPrivate::selectColumn(int column, bool anchor);

SelectItems の場合、このスロットを使用できます。

    header->setClickable(false);
于 2014-04-14T13:40:51.877 に答える