如何在仅单击第一列时选择`QTableWidget`项

时间:2015-11-06 22:53:03

标签: c++ qt qtablewidget

我希望QTableWidget有下一个行为:

  1. 它应该是行可选的,只能选择一行,我可以用setSelectionBehavior(QAbstractItemView::SelectRows);来做 setSelectionMode(QAbstractItemView::SingleSelection)

  2. 现在我只想在用户点击第一列中的项目时选择行。当用户点击其他列中的项目时,选择不应更改。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您需要将QTableWidget子类化为以这种方式重新实现mousePressEvent

#include <QMouseEvent>
#include <QTableWidget>

class Table : public QTableWidget {
  virtual void  mousePressEvent(QMouseEvent * event) {
     //the selectable column index
    const int SELECTABLE_COLUMN = 0;

    //retrieve the cell at pos
    QModelIndex i = indexAt(event->pos());

    //check if the item is in the desired column
    if ( i.column() == SELECTABLE_COLUMN ) {
      //behave as normal
      QTableView::mousePressEvent(event);
    }
    //else nothing (ignore click event)
  }
};

备注

  • 适用于QTableView