阻止QTable选择编辑中的所有文本

时间:2012-04-05 15:03:43

标签: c++ model-view-controller qt

默认情况下,编辑QTable中的项目会选择单元格中的所有文本。我想避免这种情况。但是,我似乎无法找到这种情况发生的地方。

我编写了一个简单的自定义委托,它继承自QStyledItemDelegate,并返回一个自定义对象,它只是继承自QLineEdit。在这些课程中,我尝试了一些我认为可以做“技巧”的组合,例如禁用QLineEdit::focusInEvent(),指定我QLineEdit的选择,但没有任何作用。

我最接近的是当我点击一个单元格时,我设置了我想要的所选文本。但是在单击单元格的那一刻和执行自定义选择的那一刻之间,无论如何都会选择整个文本,我想避免这种情况。

有什么想法吗?谢谢,

1 个答案:

答案 0 :(得分:2)

编写自定义QLineEdit,如下所示:

class MyLineEdit : public QLineEdit {
public:
  MyLineEdit(QWidget*parent=0) : QLineEdit(parent)
  {}

  void showEvent(QShowEvent*)
  {
    deselect();
    setSelection(1,2); // should be configurable
  }
};

并将其设置为编辑器小部件,我可以双击表格单元格并使用一些预先选择的文本获得行编辑而不会出现任何闪烁。无论如何,整个单元格在双击的过程中被选中,不知道这对你是否可以接受。