3

QTableWidgetがあり、行または列のヘッダーをクリックしたときに行または列が選択される動作を無効にしたい。

この動作を無効にする方法を知っている人はいますか?

編集: onClick関数が必要なため、ヘッダーはクリック可能なままにする必要があります。

4

7 に答える 7

3
QTableWidget::setSortingEnabled(true);

これにより、説明した列選択動作がなくなり、列による並べ替えと交換されます!

于 2011-05-20T04:57:26.720 に答える
2

tableWidget->setSelectionMode(QAbstractItemView::NoSelection);このプロパティは、ビューが動作する選択 モードを保持します。

または、必要かもしれません。tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows ) このプロパティは、ビューが使用する選択動作を保持します。 選択動作

于 2011-03-27T16:21:32.727 に答える
2

それを行うにはいくつかの方法があります

  1. あまり良くない単純な方法:)(そして、すべてがQtの実装に依存します:):テーブルビューでは、その水平ヘッダーsectionPressed(int)はテーブルselectColumn(int)に接続されているため、単純にそれらを切断できます :( (垂直ヘッダーについても同じです)
  2. テーブル ビューの仮想selectionCommand(const QModelIndex&, const QEvent* event)インターフェイスを実装し、イベントが 0 の場合は "選択なし" を返すことができます (ヘッダー領域をクリックすると 0 になるため)。
  3. そして最後に、最善かつ独自の解決策: テーブルとそのヘッダー (またはヘッダー) の両方に独自のselectionModelsを設定して、必要に応じて選択動作を再実装できます。
于 2012-03-04T11:45:16.840 に答える
0

関数setClickableに false を設定してみることができます

QTableWidget::horizontalHeader()->setClickable(false);

これが機能する場合は、[verticalHeader][2] についても同じことができます。

[2]: http://doc.qt.nokia.com/latest/qtableview.html#verticalHeader "verticalHeader"

于 2011-03-24T16:00:54.187 に答える
-2

Qt for Python が受け入れられる場合は、次のようにするとうまくいきました。

def setModel(self, model): super().setModel(model) self.horizontalHeader().sectionPressed.disconnect()

どうやら信号が で接続されていたようsetModelです。私はすべてから切り離されました。

于 2018-08-30T20:33:55.413 に答える