0

の中で作業しQTableviewていQStandardItemModelます。QTextEditから派生したクラス内で使用していQdeligatesます。これにより、テーブルビュー内に改行を挿入できます。

QTextEditほとんどのことは正常に機能していますが、編集するセルをクリックすると GUI の左隅に表示されるという課題に直面しています。セルrow 0, column 3テキストの編集をクリックすると、左隅に開きます。

QTextEdit編集中のセルの近くで開くにはどう?
すればよいですか?また、この関数の中に何を入れればよいupdateEditorGeometryですか?

テーブルビューの初期化コードは次のとおりです:--

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);

これがデリゲートの私のコードです:---

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
{

}

ここに画像の説明を入力

4

2 に答える 2