Extending Qt Creator Manual
Qt Creator is a cross-platform integrated development environment (IDE) tailored to the needs of Qt developers.
Qt Creator is extensible in various ways. For example, Qt Creator architecture is based on a plugin loader, which means that all functionality beyond plugin loading is implemented in plugins. However, you can extend and tweak many parts of Qt Creator without the need to resort to coding in C++ and implementing such a plugin.
This document gives you an overview of the various ways in which you can extend Qt Creator, depending on what you want to achieve, and points you to the relevant documentation.
Generating Domain Specific Code and Templates
If you regularly need to write the same code, be it little code snippets, whole files or classes spread over multiple files, or complete projects, you can create code snippets, templates, and wizards for that purpose.
Snippets
Typically, snippets consist of a few lines of code (although they can also be plain text) that you regularly want to insert into a bigger body of code, but do not want to type each time. For example, while
and for
loops, if-else
and try-catch
constructs, and class skeletons. Snippets are triggered in the same way as normal code completion. Qt Creator contains a set of preconfigured snippets groups to which you can add your own snippets.
File and Project Templates
You can extend the wizards in File > New File or New Project with your own file and project templates by writing JSON definition files for them.
Custom Wizards
If the above methods for code snippets and templates are not sufficient for your use case, you can create a custom Qt Creator plugin. While this gives you complete control over the wizard, it also requires you to write most of the UI and the logic yourself.
Supporting Additional File Types
If you have files with extensions or MIME types that Qt Creator does not handle by default, you can edit the MIME type definitions, add highlight definition files, and create your own text editors.
MIME Types
You might find that Qt Creator could handle a particular file of yours if it knew about the type of its contents. For example, C++ header or source files with file extensions that are not known to Qt Creator. You can adapt the MIME type definitions in Qt Creator to your specific setup, by adding or removing file extensions and specifying magic headers.
Text Highlighting and Indentation
For text files, Qt Creator provides an easy way to add highlighting and indentation for file types that are not known to it by default. Generic highlighting is based on highlight definition files that are provided by the Kate Editor. You can download highlight definition files for use with Qt Creator and create your own definition files.
Custom Text Editors
If you need more advanced features than the MIME type and highlighting features described above, such as custom text completion or features that rely on semantic analysis, you can extend Qt Creator with a text editor of your own. Qt Creator provides a special API for text editors that gives you a basis to build on, taking away some of the pain of implementing a text editor from the ground up.
Other Custom Editors
You can also add a completely custom editor to gain complete control over its appearance and behavior.
Running External Tools
Most software projects and development processes require various external tools. Several external tools, such as popular version control systems and build toolchains are integrated into Qt Creator. However, it is impossible for a single tool to cover all the use cases, and therefore you can integrate additional tools to Qt Creator.
Simple External Tools
In Qt Creator, you can specify tools that you can then run from a menu or by using a keyboard shortcut that you assign. This allows you to accomplish several things, with some limitations. You specify a command to run, arguments and input for running it, and how to handle the output. To specify the values, you can use a set of internal Qt Creator variables, such as the file name of the current document or project, or the currently selected text in a text editor. If you find variables missing, please do not hesitate to fill a feature suggestion. The tool descriptions are saved as XML files that you can share.
Complex External Tools
When you plan to integrate more complex tools, carefully consider whether there really are advantages to be gained by tightly integrating the tool into Qt Creator over loosely integrating it by mainly providing a means of starting the tool with fitting parameters.
Loosely Integrating Tools
If no interaction is needed between Qt Creator and the external tool, just starting an external application with its own user interface is preferable. That way cluttering the Qt Creator UI is avoided, and the tool will be available with a nice interface even without using Qt Creator at all.
Usually, you can use the external tool specification files to start the tool. If starting the tool and handling its output require more complex logic, you can add a menu item to Qt Creator with a plugin. If you need a way to configure the tool in Qt Creator, you can add an options page for it.
Interacting with Tool Output
In some cases, running an external tool would not require tight integration with Qt Creator, but investigating the output of the tool would benefit from it. For example, some tools generate lists of issues in files that are part of the project and some tools create output that is related to the code. For these tools, it is useful to interactively switch between the output and the corresponding code.
One way to handle that would be to let the tool create an output file, which is then opened within Qt Creator. You provide an editor (probably read-only) for handling this file. For lists of issues, consider creating task list files which are shown in Issues.
Lua Extensions
If you have more specific needs that are not covered by the above methods but don't need a full-blown plugin, you can extend Qt Creator with Lua Extensions.
All Topics
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.