Я работаю над Qtableview
внутри Qstandarditemmodel
. Я использую Qtextedit
внутри класса, полученного от Qdeligates
. Это позволяет мне вставлять новую строку внутри таблицы.Qtableview & Qdeligate - открытие qtextedit в левом углу
Большинство вещей работают нормально, но теперь я столкнулся с проблемой, когда когда-либо я нажимаю ячейку для редактирования Qtextedit, открывается в левом углу графического интерфейса. Когда я нажимаю на ячейку row 0, column 3
, текстовый файл открывается в левом углу.
Как я могу сделать мой Qtextedit
открыть около клетки, которые я издаю ?
Кроме того, что я должен положить внутри этой функции updateEditorGeometry
?
Вот мой код инициализации для Tableview: -
ui->testCaseTableView->verticalHeader()->resizeSections(QHeaderView::ResizeToContents); //---> original
ui->testCaseTableView->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
ui->testCaseTableView->horizontalHeader()->setStretchLastSection(true);
//Set model & deligate
ui->testCaseTableView->setModel(model);
ui->testCaseTableView->setItemDelegate(mydeligate);
Вот мой код deligate: ---
QWidget* textViewDeligate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QTextEdit *tableEdit = new QTextEdit(parent);
return tableEdit;
}
void textViewDeligate::setEditorData (QWidget * editor, const QModelIndex & index) const
{
QString value = index.model()->data(index,Qt::EditRole).toString();
QTextEdit *tableEditCopy = static_cast<QTextEdit*>(editor);
tableEditCopy->setPlainText(value);
}
void textViewDeligate::setModelData (QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const
{
QTextEdit *tableEditCopy = static_cast<QTextEdit*>(editor);
QString str = tableEditCopy->toPlainText();
model->setData(index, str, Qt::EditRole);
}
void textViewDeligate::updateEditorGeometry (QWidget *editor, const QStyleOptionViewItem & option, const QModelIndex & index) const
{
}