默认情况下,编辑 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/