如何禁用QTableView的整列选择?

时间:2014-04-14 12:28:39

标签: c++ qt selection qtableview qheaderview

void setSelectionBehavior ( QAbstractItemView::SelectionBehavior behavior )

此函数接受以下三个值之一:用于选择项目,用于选择行和选择单元格。

问题:

我需要单击一个单元格的情况,选中它,当单击行索引时,选择了行,但是当单击列标题时,未选中整列。据我所知,这不能用这个功能完成。

我需要tableview的行为与设置SelectionBehavior::selectItems时的行为完全相同。

但是当用户点击标题时,不应该选择该列。

我正在考虑从QHeaderView禁用列选择,但找不到如何?

1 个答案:

答案 0 :(得分:2)

从我的申请表中:

    // 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.cppqtableview.cpp,广告位voidQHeaderView::mousePressEvent(QMouseEvent *e);voidQTableViewPrivate::selectColumn(int column, bool anchor);

中找到证据

对于SelectItems,可以使用此插槽:

    header->setClickable(false);