2012-04-05 3 views
2

По умолчанию редактирование элемента в QTable позволяет выбрать весь текст внутри ячейки. Я хочу этого избежать. Однако я не могу найти, где это происходит.Предотвращение выбора QTable всего текста при редактировании

Я написал простой пользовательский делегат, который наследует от QStyledItemDelegate и возвращает пользовательский объект, который просто наследуется от QLineEdit. В этих классах я пробовал некоторые комбинации того, что, как я думал, мог сделать «трюк», например, отключить QLineEdit::focusInEvent(), указав выбор моего QLineEdit, но ничего не работает.

Ближайшее, что я вижу, это то, что когда я нажимаю на ячейку, я устанавливаю выделенный текст, который я хочу. Но в тот момент, когда нажата ячейка, и в тот момент, когда мой пользовательский выбор выполняется, весь текст выбран в любом случае, чего я хочу избежать.

Любая идея? Спасибо,

ответ

2

Кодирование пользовательского QLineEdit как это:

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

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

и установить его в качестве виджета-редактора, я могу дважды щелкнуть ячейку таблицы и получить строки редактирования с некоторыми предварительно выделенным текстом без какого-либо мерцания. Во всяком случае, вся ячейка становится выбранной в середине двойного щелчка, не знаю, приемлемо ли это для вас.

+0

Это сделало трюк. Благодаря! – piwi

Смежные вопросы