Создал делегат для QTableWidget, основные процедуры приведены ниже
QWidget* BtnDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem& /* option */, const QModelIndex &/* index */) const {
QWidget *editor = new QWidget(parent);
QHBoxLayout *h = new QHBoxLayout();
QPushButton *btn = new QPushButton("...", editor);
btn->setMaximumWidth(20);
QLineEdit *dd = new QLineEdit(editor);
dd->setStyleSheet("background-color: white; border-top-color: white; border-bottom-color: red;");
h->addWidget(dd);
h->addWidget(btn);
h->setContentsMargins(0,0,0,0);
h->setSpacing(0);
editor->setLayout(h);
QObject::connect(btn, SIGNAL(clicked()), this, SIGNAL( clicked() ) );
dd->setFocus();
dd->selectAll();
return editor;
}
void BtnDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const {
QString value = index.model()->data(index, Qt::EditRole).toString();
QLineEdit *le = editor->findChild<QLineEdit *>();
le->setText(value);
le->setFocus();
le->selectAll();
}
Проблема в том, что при входе в режим редактирования, мне необходимо что фокус был в QLineEdit и весь текст, который находится в нем был выделен. Пробовал сделать через setFocus() и selectAll() но ничего не получилось