Eike Ziller

Qt Creator 4.9.0 released

Published Monday April 15th, 2019
30 Comments on Qt Creator 4.9.0 released
Posted in Biz Circuit & Dev Loop, Qt, QtCreator, Releases

We are happy to announce the release of Qt Creator 4.9.0!

Generic Programming Language Support

In Qt Creator 4.8 we introduced experimental support for the language server protocol. This enables editing support for a wide range of programming languages through a common protocol. In 4.9 we add support for the document outline, find usages, and also for code actions, which allow the language server to suggest fixes or refactoring actions at a specified place in the code. If the language server of your favorite programming language supports these features, they are now available in Qt Creator as well. Enable the LanguageClient plugin in Help > About Plugins (Qt Creator > About Plugins on macOS) and configure your server in Tools > Options > Language Client to check it out.

Highlighting is still provided by the generic highlighter in these cases. We changed our highlighter to be based on the KSyntaxHighlighting library, which is the library used in KDE for this purpose. Many thanks to the maintainers of KSyntaxHighlighting for making it available to a wide range of uses.

C++ Support

The UI for diagnostics from the Clang analyzer tools got many improvements. They are grouped by file now. Diagnostics from the project’s headers files are now also included.
Fix-its show details on what they do when applied. We also added a guard against applying Fix-its to files that have changed in the meantime. In the Clazy configuration you can enable or disable individual checks.

If you enabled a diagnostic to be shown inline in the code editor, you can disable individual checks via a button in the diagnostic’s tool tip.

QML Support

We updated our QML parser to Qt 5.12, adding support for ECMAScript 7.


Perf is a powerful performance profiling tool for software running on a Linux system. Profile your application via perf with Analyze > Performance Analyzer, after enabling the plugin in Help > About Plugins. The integration in Qt Creator is available for applications running on a local Linux system, and also for applications running on a remote Linux system from a Linux or Windows host.

Generic Projects

Similar to our support for deploying files to a remote system for CMake-based projects, you can now add a QtCreatorDeployment.txt file to your generic project, to specify the necessary information about where to deploy which files.

If your project needs some special compiler flags to be correctly handled by the code model, you can now specify these in a .cxxflags or .cflags file.

Other Improvements

For Windows, we added support for MSVC 2019. On macOS we added a Touch Bar if you run Qt Creator on a MacBook.

For remote Linux targets, we exchanged our Botan-based SSH backend by use of OpenSSH tools. You need to install the tools separately (if you have not already) to be able to benefit from a wide range of encryption and authentication features in Qt Creator. We also added a rsync-based deployment method, as well as support for Run in Terminal.

Version control support has also received many fixes and improvements. The Git Branches view has a new Push action and Git tracks detached HEADs.

These are just some highlights of the many improvements and fixes included in Qt Creator 4.9. Please refer to our change log for a more thorough overview.

Get Qt Creator 4.9.0

The opensource version is available on the Qt download page under “Qt Creator”, and you find commercially licensed packages on the Qt Account Portal. Qt Creator 4.9.0 is also available as an update in the online installer. Please post issues in our bug tracker. You can also find us on IRC on #qt-creator on chat.freenode.net, and on the Qt Creator mailing list.

Do you like this? Share it
Share on LinkedInGoogle+Share on FacebookTweet about this on Twitter

Posted in Biz Circuit & Dev Loop, Qt, QtCreator, Releases


Juergen_M says:

Thanks for the good work.
Unfortunately Bogdan’s Android-Cmake plugin hasn’t been integrated yet.
Will it be integrated in 4.10?

Dave says:

It is sad that android + cmake still not supported

Eike Ziller Eike Ziller says:

It missed feature freeze for 4.9 but has been integrated for 4.10 (https://codereview.qt-project.org/244363)
Snapshots here https://download.qt.io/snapshots/qtcreator/4.10/4.10.0-beta1/ 😉

Antonio Di Monaco says:


when using the Performance Analyzer, it reports that the “perfparser” cannot be found. There’s no executable called perfparser in the installer. How can I use it then?


Eike Ziller Eike Ziller says:

The perfparser executable is there on Linux and Windows as far as I can tell. We do not support perf on macOS. If you are on a Linux or Windows system (with Linux as target platform) and have issues there, please create a bug report so we can try to figure out what goes wrong.

Antonio Di Monaco says:

Sorry, my bad, I found the executable. Thanks!

Konstantin says:

Qt Creator 4.9.0 crashes while restoring the last session

Thread 0:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff62cef862 __open + 10
1 org.qt-project.QtCore 0x000000010eb8ff41 QFSFileEnginePrivate::nativeOpen(QFlags) + 193
2 org.qt-project.QtCore 0x000000010eb6031b QFSFileEngine::open(QFlags) + 107
3 org.qt-project.QtCore 0x000000010eb32f9e QFile::open(QFlags) + 174
4 libUtils.4.9.0.dylib 0x000000010dbbf6ba Utils::PersistentSettingsReader::load(Utils::FileName const&) + 58
5 libUtils.4.9.0.dylib 0x000000010db448e1 Utils::SettingsAccessor::readFile(Utils::FileName const&) const + 49
6 libUtils.4.9.0.dylib 0x000000010db44676 Utils::SettingsAccessor::readData(Utils::FileName const&, QWidget*) const + 22
7 libUtils.4.9.0.dylib 0x000000010db498db Utils::MergingSettingsAccessor::readData(Utils::FileName const&, QWidget*) const + 427
8 libUtils.4.9.0.dylib 0x000000010db4430d Utils::SettingsAccessor::restoreSettings(Utils::FileName const&, QWidget*) const + 29
9 libUtils.4.9.0.dylib 0x000000010db442c5 Utils::SettingsAccessor::restoreSettings(QWidget*) const + 37
10 libProjectExplorer.dylib 0x000000011cb3231e ProjectExplorer::Project::restoreSettings(QString*) + 110
11 libProjectExplorer.dylib 0x000000011ca4f34b ProjectExplorer::ProjectExplorerPlugin::openProjects(QStringList const&) + 1179
12 libProjectExplorer.dylib 0x000000011cb2763e ProjectExplorer::SessionManagerPrivate::restoreProjects(QStringList const&) + 62
13 libProjectExplorer.dylib 0x000000011cb2501b ProjectExplorer::SessionManager::loadSession(QString const&) + 3147
14 libProjectExplorer.dylib 0x000000011ca4e827 ProjectExplorer::ProjectExplorerPluginPrivate::restoreSession() + 1143
15 org.qt-project.QtCore 0x000000010ec2414d QSingleShotTimer::timerEvent(QTimerEvent*) + 173
16 org.qt-project.QtCore 0x000000010ec14576 QObject::event(QEvent*) + 102
17 org.qt-project.QtWidgets 0x000000010dd968ed QApplicationPrivate::notify_helper(QObject*, QEvent*) + 269
18 org.qt-project.QtWidgets 0x000000010dd97cf2 QApplication::notify(QObject*, QEvent*) + 594
19 org.qt-project.QtCore 0x000000010ebeaef4 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 212
20 org.qt-project.QtCore 0x000000010ec4434f QTimerInfoList::activateTimers() + 991
21 libqcocoa.dylib 0x0000000110ef0182 QCocoaEventDispatcherPrivate::activateTimersSourceCallback(void*) + 18
22 com.apple.CoreFoundation 0x00007fff3ac898f1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
23 com.apple.CoreFoundation 0x00007fff3ad4330c __CFRunLoopDoSource0 + 108
24 com.apple.CoreFoundation 0x00007fff3ac6c350 __CFRunLoopDoSources0 + 208
25 com.apple.CoreFoundation 0x00007fff3ac6b7cd __CFRunLoopRun + 1293
26 com.apple.CoreFoundation 0x00007fff3ac6b033 CFRunLoopRunSpecific + 483
27 com.apple.HIToolbox 0x00007fff39f55d96 RunCurrentEventLoopInMode + 286
28 com.apple.HIToolbox 0x00007fff39f55a0f ReceiveNextEventCommon + 366
29 com.apple.HIToolbox 0x00007fff39f55884 _BlockUntilNextEventMatchingListInModeWithFilter + 64
30 com.apple.AppKit 0x00007fff38205a73 _DPSNextEvent + 2085
31 com.apple.AppKit 0x00007fff3899be34 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
32 com.apple.AppKit 0x00007fff38437e7b -[NSApplication _doModalLoop:peek:] + 476
33 com.apple.AppKit 0x00007fff3861db8a __33-[NSApplication runModalSession:]_block_invoke_2 + 69
34 com.apple.AppKit 0x00007fff3861db32 __33-[NSApplication runModalSession:]_block_invoke + 83
35 com.apple.AppKit 0x00007fff38acb219…

Eike Ziller Eike Ziller says:

Haven’t seen this before, please create a bugreport on https://bugreports.qt.io/projects/QTCREATORBUG so we can investigate (the thread that you posted is not the one that crashed btw).

aportale says:

Thank you for the report. From the log that you posted on the mailing list, it looks like the updated QML parser is crashing after an enormous recursion:

Thread 20 Crashed:: QThread
0 libQmlJS.4.9.0.dylib 0x00000001118eb624 QmlJS::Bind::visit(QmlJS::AST::PatternElement*) + 4
1 libQmlJS.4.9.0.dylib 0x00000001118c3fcf QmlJS::AST::PatternElement::accept0(QmlJS::AST::Visitor*) + 31
2 libQmlJS.4.9.0.dylib 0x00000001118c431d QmlJS::AST::PatternElementList::accept0(QmlJS::AST::Visitor*) + 125
3 libQmlJS.4.9.0.dylib 0x00000001118c434e QmlJS::AST::PatternElementList::accept0(QmlJS::AST::Visitor*) + 174
511 libQmlJS.4.9.0.dylib 0x00000001118c434e QmlJS::AST::PatternElementList::accept0(QmlJS::AST::Visitor*) + 174

Qt Creator 4.9 has (a fork of) the EcmaScript7 capable JS/QML parser that was introduced with Qt 5.12. It would really good to find out which QML code can cause such a crash.

jason says:

Sigh. Scrollbar locations are still off…

Gustavo Brondani Schenkel says:

Why I need elevated authentication on Windows to updated/install the QtCreator? The last time I got this issue was when QtCreator was compiled against MSVC2017.

Eike Ziller Eike Ziller says:

It should not be necessary after having the MSVC2017 redist installed. Is this online, offline or both? Please consider creating a bugreport on https://bugreports.qt.io/projects/QTCREATORBUG , blog post comments are not a good place to keep track of things.

Eike Ziller Eike Ziller says:

We just released an update for the MSVC2017 redist detection in the online installer. The offline installers already had that fix.

Gustavo Brondani Schenkel says:

That resolved the issue, thanks!

Other question, any plans to add the x86_64 version of QtCreator into the online installer?

Markus says:


Michael Chinander says:

I’d be interested in a blog post on the creation of a UI Tour like what’s included with QtC 4.9.0.

Eike Ziller Eike Ziller says:

Code is here: https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/src/plugins/welcome/introductionwidget.cpp , not sooo complicated 🙂

The highlighted area is defined by the object name of a widget that is then searched for in the widget hierarchy (parentWidget()->findChild(anchorObjectName) in setStep(…)).
The rest is a fancy label and some semi-transparent painting (rectangles shading the top, bottom, left and right of the spotlighted widget, and the gradient is actually painted with a “border image” similar to the border-image CSS property).

nomad says:

So what was the motivation for switching to this KSyntaxHighlighting garbage? It breaks existing rules.

Eike Ziller Eike Ziller says:

Maintaining a custom parser is not very sensible and not very sustainable as the kate/ktexteditor syntax highlighting evolves.

nomad says:

Your parser was the only good parser out there.

RealNC says:

The Clang code model seems quite mature now; it doesn’t trip over every other header like it tended to do in the past. The static analysis support is great, especially the ability to select which files to run it on. The clang-format integration is really helpful and enabling it for indentation (“Format instead of indenting”) works flawlessly for me now.

Great release IMO!

QtDeveloper says:

Thank you for all of your work on the QtCreator, but…
code folding is broken in xml files. In previous version I was able to fold/unfold xml tags with multiline content and it was really helpful. Please fix this. Thank you.

Tom Deblauwe says:

Unfortunately, cmake remote code deployment changed and is not backwards compatible anymore. The target files(apps, shared libs) are now placed in a fixed location on the remote. All fine, but then you should really provide a howto for what has changed or what you have to do to fix it: https://bugreports.qt.io/browse/QTCREATORBUG-22184

Stephan says:

Unfortunately, the maintenance tools let me install Qt creator 4.9.0 on macOS 10.11. Now the Qt creator tells me 10.12 is required at least. So the new version completely broke my old installation and it’s not possible to downgrade via maintenance tool. How can I repair my installation without updating macOS? Tanks in advance!

Tim says:

Every QtCreator can be started with an argument – – installersettings and there you can point it to Qt Creator.app/Contents/Resources/Qt Project of the by online installed version and then you get all registered Qts and kits, hope that helps to generate a workaround for you.

Stephan says:

Thank for your reply. But I can’t start Qt create app with or without any command line arguments anymore, macOS is telling me it’s not working under macOS 10.11.
I need to find the Qt installation package containing Qt creator 4.7.2. (I think that was the last version working under macOS 10.11)

Arthur Nascimento says:

Download the previous vesion of Qt Creator (https://download.qt.io/official_releases/qtcreator/4.8/4.8.2/) and do what Tim said

Eike Ziller Eike Ziller says:

As a workaround you can get the last prebuilt Qt Creator version that runs on macOS 10.11 (http://download.qt.io/official_releases/qtcreator/4.8/4.8.1/) and point it to the Qt online (or offline) install with the command line argument ‘-installsettingspath “/Qt Creator.app/Contents/Resources” ‘ to get the “auto-detected” Qt versions & kits.

If you want Qt Creator 4.9 to run on macOS 10.11, you’ll have to compile it yourself (against a Qt version that still supports macOS 10.11, e.g. Qt 5.9.x).

Leave a Reply

Your email address will not be published.

Get started today with Qt Download now