c++ - 防止 QTable 在编辑时选择所有文本

标签 c++ model-view-controller qt

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

我编写了一个简单的自定义委托(delegate),它继承自QStyledItemDelegate,并返回一个仅继承自QLineEdit的自定义对象。在这些类(class)中,我尝试了一些我认为可以实现“技巧”的组合,例如禁用 QLineEdit::focusInEvent()、指定我的 QLineEdit 的选择,但没有任何效果。

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

有什么想法吗?谢谢,

最佳答案

像这样编写自定义 QLineEdit:

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

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

并将其设置为编辑器小部件,我可以双击表格单元格并使用一些预选文本进行行编辑,而不会出现任何闪烁。反正双击的时候整个单元格就被选中了,不知道你能不能接受。

关于c++ - 防止 QTable 在编辑时选择所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031121/

相关文章:

c++ - 堆栈溢出 C++

c++ - std::map 用于小型稀疏集合

c++ - 除法不跨越字节

c++ - Qt - 使用 QString::arg 将文本对齐到列中

python - CentOS:QtWebKit 丢失,Anki 无法启动

c++ - 目标文件是什么样的

php - 你如何处理 jQuery 中的后退按钮?

model-view-controller - 什么是 magento 报价?

c# - MVC 替代路由因可选参数而失败

qt - 如何在 Qt 中检查网络接口(interface)的类型?