Qt Creator JS 中有哪些 JS 对象可用:变量扩展? [英] What JS objects are available in Qt Creator JS: variable expansion?

查看:43
本文介绍了Qt Creator JS 中有哪些 JS 对象可用:变量扩展?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Qt Creator 的向导和配置设置支持 变量扩展,包括 JavaScript 表达式的求值,例如C++ 类向导文件模板包含:

Qt Creator's wizards and configuration settings supports variable expansion, including evaluation of JavaScript expressions, e.g. the C++ class wizard file template contains:

%{JS: Cpp.openNamespaces('%{Class}')}

Cpp 似乎是一个全局对象.Qt Creator 源中的哪些地方定义了这些源,哪些是可用的?

Cpp seems to be a global object. Where in the Qt Creator sources are those defined, and what's available?

这些都没有记录在任何地方.

These are not documented anywhere.

推荐答案

JavaScript 变量扩展由 JsExpander 在核心插件中.扩展器可以注册 QObject 实例并将它们作为全局 JS 对象的属性公开.

The JavaScript variable expansion is performed by the JsExpander in the core plugin. The expander can register QObject instances and expose them as properties of the global JS object.

要查找所有这些全局对象,请搜索 registerQObjectForJs 方法调用.请参阅此方法的 github 搜索结果.

To find all of those global objects, search for registerQObjectForJs method invocations. See the github search results for this method.

从 Qt Creator 4.2.1 到至少 4.6,以下是唯一注册的对象:

As of Qt Creator 4.2.1, and until at least 4.6, the following are the only objects registered:

  • Util - exposing Internal::UtilsJsExtension,
  • Cpp - exposing CppTools::Internal::CppToolsJsExtension,
  • Modeling - exposing ModelEditor::Internal::JsExtension,
  • QtSupport - exposing QtSupport::CodeGenerator,
  • Vcs - exposing VcsBase::Internal::VcsJsExtension.

方法参数类型通过 QJSEngine 映射到 JavaScript 类型.例如.要获得 Qt 包含,可以进行以下替换:

The method parameter types are mapped to JavaScript types by QJSEngine. E.g. to obtain the Qt includes, one could have the following substitution:

%{JS: QtSupport.qtIncludes([ '%{Base}' ], [ '%{Base}' ])}

给定签名

QString qtIncludes(const QStringList &qt4, const QStringList &qt5)

方法列表如下.

QString toNativeSeparators(const QString &in) const;
QString fromNativeSeparators(const QString &in) const;

QString baseName(const QString &in) const;
QString fileName(const QString &in) const;
QString completeBaseName(const QString &in) const;
QString suffix(const QString &in) const;
QString completeSuffix(const QString &in) const;
QString path(const QString &in) const;
QString absoluteFilePath(const QString &in) const;

QString relativeFilePath(const QString &path, const QString &base) const;

// File checks:
bool exists(const QString &in) const;
bool isDirectory(const QString &in) const;
bool isFile(const QString &in) const;

// MimeDB:
QString preferredSuffix(const QString &mimetype) const;

// Generate filename:
QString fileName(const QString &path,
                             const QString &extension) const;

// Generate temporary file:
QString mktemp(const QString &pattern) const;

// Generate a ascii-only string:
QString asciify(const QString &input) const;

每次通话费用

// Generate header guard:
QString headerGuard(const QString &in) const;

// Fix the filename casing as configured in C++/File Naming:
QString fileName(const QString &path, const QString &extension) const;

// Work with classes:
QStringList namespaces(const QString &klass) const;
QString className(const QString &klass) const;
QString classToFileName(const QString &klass,
                                    const QString &extension) const;
QString classToHeaderGuard(const QString &klass, const QString &extension) const;
QString openNamespaces(const QString &klass) const;
QString closeNamespaces(const QString &klass) const;

建模

QString fileNameToElementName(const QString &file);
QString elementNameToFileName(const QString &element);

Qt 支持

// Ui file related:
// Change the class name in a UI XML form
QString changeUiClassName(const QString &uiXml, const QString &newUiClassName);

QString uiClassName(const QString &uiXml);

// Generic Qt:
QString qtIncludes(const QStringList &qt4, const QStringList &qt5);

VC

bool isConfigured(const QString &vcsId) const;
QString displayName(const QString &vcsId) const;

这篇关于Qt Creator JS 中有哪些 JS 对象可用:变量扩展?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆