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

时间:2015-10-07 21:46:40

标签: qt qml qtquick2

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

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

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

1 个答案:

答案 0 :(得分:5)

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