如何在QML TextEdit中更改选项卡大小?

qCr*_*ing 4 qt qml qtquick2

TextEdit在Qt 5.5应用程序中使用组件编写代码.当Tab从其他编辑器按下或粘贴片段时,会应用默认选项卡大小(这是巨大的),我找不到更改该值的方法.

我的解决方法是将关键事件转发到C++控制器,在那里我为每个事件插入myCustomTabSize时间.或者在粘贴之前从剪贴板手动准备字符串.spaceCharacterQt::Key_Tab

QTextEdit类提供了一个setTabStopWidth方法.那是否有QML等价物?

Mee*_*fte 5

要在QML TextEdit中更改选项卡大小,请执行以下步骤:

1)设置objectNameTextEdit.

TextEdit {
    objectName: "myTextEdit"
}
Run Code Online (Sandbox Code Playgroud)

2)TextEdit从c ++ 获取访问权限.

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

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

3)获取QTextDocument,关联TextEdit.

QQuickTextDocument *quickTextDocument = textEdit->property("textDocument").value<QQuickTextDocument*>();
QTextDocument *document = quickTextDocument->textDocument();
Run Code Online (Sandbox Code Playgroud)

4)获取默认值QTextOption.

QTextOption textOptions = document->defaultTextOption();
Run Code Online (Sandbox Code Playgroud)

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

textOptions.setTabStop(10);
Run Code Online (Sandbox Code Playgroud)

6)设置文档选项.

document->setDefaultTextOption(textOptions);
Run Code Online (Sandbox Code Playgroud)