将拖动选择限制为QTableWidget中的一行

将拖动选择限制为QTableWidget中的一行,qt,qtablewidget,Qt,Qtablewidget,我正在使用QTableWidget进行自定义时间线视图。我想限制拖动选择,同时在表小部件中保留选择行为和模式的一些属性 下面是我的一段代码: //TableWidget.cpp TableWidget::TableWidget(QWidget* parent) : QTableWidget(10, 10, parent) { setStyleSheet("QTableWidget {background-color: #333333;color: #fffff8;gridline-co

我正在使用
QTableWidget
进行自定义时间线视图。我想限制拖动选择,同时在表小部件中保留选择行为和模式的一些属性

下面是我的一段代码:

//TableWidget.cpp

TableWidget::TableWidget(QWidget* parent) : QTableWidget(10, 10, parent)
{
    setStyleSheet("QTableWidget {background-color: #333333;color: #fffff8;gridline-color: #fffff8;font-size: 12pt;}");

    verticalHeader()->hide();

    horizontalHeader()->setHighlightSections(false);

    setSortingEnabled(true);

    setEditTriggers(QAbstractItemView::NoEditTriggers);

    setSelectionMode(QAbstractItemView::ExtendedSelection);
    setSelectionBehavior(QAbstractItemView::SelectRows); 
}
问题

根据,我可以将
selectionBehavior
设置为
SelectRows
,但它只需单击一个单元格即可选择完整的行。问题如下所示:

要求

  • 通过拖动鼠标进行多项选择,但仅在行中,它是第一次单击的

  • 向下或对角拖动鼠标应而不是选择多个行和列,如图所示

  • 需要保留Shift Key属性,即单击一个单元格,然后选择另一个按住Shift键的单元格,则应选择中间的所有单元格
  • 多选:我想选择多个单元格,只需单击它们,而不会丢失对上一个单元格的选择
    MultiSelection
    as
    selectionMode
    提供此功能,但不支持Shift键
我尝试使用
mouseEvents
实现自定义功能,但我无法通过编程了解如何在
QTableWidget
中选择/取消选择特定单元格。我相信我必须实现自己的
mouseEvents
,但不确定如何实现上述功能


编辑:当我将所选内容用作视觉演示时,
TableWidget
将始终保持为空(无需填充数据)。

使用而不是Widget我已编辑了问题。
QTableView
是否提供了其他功能请记住,我不会将该表用于任何类型的数据?通常不会,其他功能是在模型+委托中实现的,而不是在视图中实现的。