我在这个项目上工作,目前我遇到了以下问题。 它是关于一个QTableView,它有一个名为“Description”的列,该列的单元格包含一个QPlainTextEditDelegate。我每次输入时都没有设置QPlainTextEdit的高度。现在它的行为类似于QLineEdit,直到我拖动QTableView更大的行(我当时处于活动状态)。
我想要做的是在我输入后更改QPlainTextEdit的高度。 你有什么建议?我怎样才能完成这件事呢?
提前谢谢大家!
BTW抱歉,我的英语很差:/
编辑:
好的我解决了它,但没有sizeHint,我使用了updateEditorGeometry:
void updateEditorGeometry( QWidget* editor, const QStyleOptionViewItem & option, const QModelIndex & index ) const;
在此方法中,您可以根据需要设置宽度或高度
editor->setGeometry(option.rect.x(),option.rect.y(),<your_width>,<your_height>);
但是还是谢谢你!
答案 0 :(得分:1)
您应该重新实现QAbstractItemDelegate :: sizeHint方法,以在创建编辑器时返回预期的高度。我不认为在创建编辑器后发出QAbstractItemDelegate :: sizeHintChanged信号是必要的,但文档没有说什么。如果没有它就无法工作,你应该在返回创建的编辑器小部件后发出sizeHintChanged,以通知需要更改行高的视图。