如何更改 QML TextEdit 中的制表符大小?

How to change the tab size in QML TextEdit?

我在 Qt 5.5 应用程序中使用 TextEdit 组件作为代码编辑器。当按 Tab 或从其他编辑器粘贴片段时,会应用默认的制表符大小(很大),我就是找不到更改该值的方法。

我的解决方法是将关键事件转发到 C++ 控制器,我在其中为每个 Qt::Key_Tab 事件插入 myCustomTabSizespaceCharacter。或者在粘贴之前从剪贴板手动准备字符串。

QTextEdit class 提供了 setTabStopWidth 方法。有对应的 QML 吗?

要在 QML TextEdit 中更改制表符大小,请按照以下步骤操作:

1) 将objectName设置为TextEdit.

TextEdit {
    objectName: "myTextEdit"
}

2) 从 c++ 获取对 TextEdit 的访问权。

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

QObject *root = engine.rootObjects().at(0);
QObject *textEdit = root->findChild<QObject*>(QStringLiteral("myTextEdit"));

3) 获取QTextDocument,关联TextEdit.

QQuickTextDocument *quickTextDocument = textEdit->property("textDocument").value<QQuickTextDocument*>();
QTextDocument *document = quickTextDocument->textDocument();

4) 获取默认值 QTextOption.

QTextOption textOptions = document->defaultTextOption();

5) 设置制表位之间的设备单位距离

textOptions.setTabStop(10);

6) 设置文档选项。

document->setDefaultTextOption(textOptions);