将拖动选择限制为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键的单元格,则应选择中间的所有单元格
- 多选:我想选择多个单元格,只需单击它们,而不会丢失对上一个单元格的选择
asMultiSelection
提供此功能,但不支持Shift键selectionMode
mouseEvents
实现自定义功能,但我无法通过编程了解如何在QTableWidget
中选择/取消选择特定单元格。我相信我必须实现自己的mouseEvents
,但不确定如何实现上述功能
编辑:当我将所选内容用作视觉演示时,
TableWidget
将始终保持为空(无需填充数据)。使用而不是Widget我已编辑了问题。QTableView
是否提供了其他功能请记住,我不会将该表用于任何类型的数据?通常不会,其他功能是在模型+委托中实现的,而不是在视图中实现的。