将拖动选择限制为QTableWidget

时间:2018-07-11 12:53:50

标签: qt qtablewidget

我在自定义时间轴视图中使用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); 
}

问题

根据Qt-Documentation,我可以将selectionBehavior设置为SelectRows,但是只需单击一个单元格即可选择完整的行。问题显示在这里:

enter image description here

要求

  • 通过拖动鼠标但仅在该行中进行多次选择,才首先单击它。

  • 向下或对角拖动鼠标,应选择多行和多列,如图所示 enter image description here

  • 需要保留
  • Shift键属性,即,单击一个单元格,然后选择另一个按住Shift键的单元格,应选择中间的所有单元格。
  • 多项选择:我想通过单击多个单元来选择多个单元,而不会丢失对先前单元的选择。 MultiSelectionselectionMode一样提供此功能,但不支持 Shift键

我尝试使用mouseEvents实现自定义功能,但无法获得如何以编程方式选择/取消选择QTableWidget中的特定单元格的方法。我相信我必须实现自己的mouseEvents,但不确定如何实现上述功能。

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

0 个答案:

没有答案