3

我有一个 QTableWidget,我想禁用当您单击行或列标题时选择行或列的行为。

有谁知道如何禁用此行为?

编辑: 标题需要保持可点击,因为需要 onClick 功能。

4

7 回答 7

3
QTableWidget::setSortingEnabled(true);

这消除了您描述的列选择行为,并将其换成按列排序!

于 2011-05-20T04:57:26.720 回答
3

您可能希望将 selectColumn 插槽与标头的 sectionPressed 信号断开连接,如下所示:

disconnect(horizontalHeader(), SIGNAL(sectionPressed(int)),this, SLOT(selectColumn(int)));
于 2016-07-18T01:58:22.737 回答
2

有几种方法可以做到这一点

  1. 不太好的简单方法:)(并且取决于Qt实现作为一切:):在表格视图中,它的水平标题sectionPressed(int)连接到表格selectColumn(int),所以你可以简单地断开它们:( (垂直标题同样肯定)
  2. 您可以实现表格视图虚拟selectionCommand(const QModelIndex&, const QEvent* event)接口,如果事件为 0,则返回“无选择”(因为它是 0,然后单击标题区域)
  3. 最后是最好的原始解决方案:您可以拥有然后为表及其标题(或标题)设置自己的selectionModel ,并根据需要重新实现选择行为。
于 2012-03-04T11:45:16.840 回答
2

tableWidget->setSelectionMode(QAbstractItemView::NoSelection); 该属性保存视图操作的选择模式。SelectionMode

或者您可能需要tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows ) 此属性保存视图使用的选择行为。 选择行为

于 2011-03-27T16:21:32.727 回答
0

您可以尝试将 false 设置为函数setClickable

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

如果这可行,那么您可以对 [verticalHeader][2] 执行相同的操作

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

于 2011-03-24T16:00:54.187 回答
0

我知道这个问题的答案。

disconnect(yourTableWidget->horizontalHeader(), SIGNAL(sectionPressed(int)),yourTableWidget, SLOT(selectColumn(int)));
于 2018-10-28T03:02:57.763 回答
-2

如果 Qt for Python 是可以接受的,那么这样做对我有用:

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

显然,信号正在连接中setModel。我只是断开了一切。

于 2018-08-30T20:33:55.413 回答