2015-11-06 72 views
0

我想QTableWidget下一个行为来选择:如何使`QTableWidget`项目,只有当第一列被点击

  1. 应该排可选,只有一个行可以选择,我可以做它与setSelectionBehavior(QAbstractItemView::SelectRows); setSelectionMode(QAbstractItemView::SingleSelection)

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

回答

0

你继承QTableWidget这样

#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) 
    } 
}; 

注意

  • 重新实现mousePressEvent Works的QTableView
+0

同样不就足够了改变e QTableWidgetItem标志排除Qt :: ItemIsSelectable? –

+0

不,它不会保留'setSelectionBehavior(QAbstractItemView :: SelectRows)'行为 –

相关问题