如何更改 QML TextEdit 中的制表符大小?
How to change the tab size in QML TextEdit?
我在 Qt 5.5 应用程序中使用 TextEdit
组件作为代码编辑器。当按 Tab 或从其他编辑器粘贴片段时,会应用默认的制表符大小(很大),我就是找不到更改该值的方法。
我的解决方法是将关键事件转发到 C++ 控制器,我在其中为每个 Qt::Key_Tab
事件插入 myCustomTabSize
次 spaceCharacter
。或者在粘贴之前从剪贴板手动准备字符串。
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);
我在 Qt 5.5 应用程序中使用 TextEdit
组件作为代码编辑器。当按 Tab 或从其他编辑器粘贴片段时,会应用默认的制表符大小(很大),我就是找不到更改该值的方法。
我的解决方法是将关键事件转发到 C++ 控制器,我在其中为每个 Qt::Key_Tab
事件插入 myCustomTabSize
次 spaceCharacter
。或者在粘贴之前从剪贴板手动准备字符串。
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);