150 const QStyleOptionViewItem&
option,
151 const QModelIndex&
index)
const
153 QTextEdit* textEdit = qobject_cast<QTextEdit*>(editor);
156 QStyledItemDelegate::updateEditorGeometry(editor,
option,
index);
172 const QStringList lines = text.split(
'\n');
173 const QFontMetrics metrics(textEdit->document()->defaultFont());
176 const QWidget* parent = editor->parentWidget();
179 const int maxUsefulWidth = parent ? parent->width() : r.width() * 4;
182 for (
const QString& line : lines)
184 textWidth = std::max(textWidth, advanceWidth(metrics, line));
185 if (textWidth >= maxUsefulWidth)
192 const int padding = 2 * textEdit->frameWidth() +
193 2 *
static_cast<int>(textEdit->document()->documentMargin());
195 int width = std::max(r.width(), textWidth + padding);
196 int height = std::max(r.height(), lines.size() * metrics.lineSpacing() + padding);
200 width = std::min(width, parent->width() - r.x());
201 height = std::min(height, parent->height() - r.y());
203 r.setSize(QSize(width, height));
204 editor->setGeometry(r);