Important: Please read the Qt Code of Conduct -

QApplication constructors

  • I'm not sure what is at fault here, but I just noticed that there are some inconsistencies with the QApplication constructors.

    If I type the following code in the editor:
    QCoreApplication *application = new QApplication(

    the code completion shows me that there are 4 different constructors, but if I press F1 on QApplication, none of the constructors in the help match the signatures of the constructors listed by the code completion.

    According to the help:
    QApplication ( int & argc, char ** argv )
    QApplication ( int & argc, char ** argv, bool GUIenabled )
    QApplication ( int & argc, char ** argv, Type type )
    QApplication ( Display * display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0 )
    QApplication ( Display * display, int & argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0 )
    QApplication ( QApplication::QS60MainApplicationFactory factory, int & argc, char ** argv )

    If I introduce a compile error, the output is:
    ..\Launcher\main.cpp:15: error: no matching function for call to 'QApplication::QApplication(int, int)'
    ....\QtSDK\Desktop\Qt\4.8.0\mingw\include\QtGui/qapplication.h:389: note: candidates are: QApplication::QApplication(const QApplication&)
    ....\QtSDK\Desktop\Qt\4.8.0\mingw\include\QtGui/qapplication.h:130: note: QApplication::QApplication(int&, char**, QApplication::Type, int)
    ....\QtSDK\Desktop\Qt\4.8.0\mingw\include\QtGui/qapplication.h:129: note: QApplication::QApplication(int&, char**, bool, int)
    ....\QtSDK\Desktop\Qt\4.8.0\mingw\include\QtGui/qapplication.h:128: note: QApplication::QApplication(int&, char**, int)

    It looks like the code completion at least matches the compiler. The online Qt documentation matches the help in QtCreator. So, is this simply a case of incorrect documentation?

  • Note that the first parameter is a reference to int, not an int.

  • Yep, noticed that. Which is also interesting since the code
    QCoreApplication *application = new QApplication(0, 0);

    Compiles on Ubuntu with the Qt Creator installed from the repository and I think Qt 4.7.1. But it shouldn't...

    But that's not the point, the point is the difference between the help file and the actual code.

  • I haven't verified this but the last parameter might be marked as internal (it is even named internal if I recall correctly), which means that it is hidden in the documentation (automatically by the documentation tool) but shown in Qt Creator - which just analyzes the source files and suggests what found.

    Be aware that some of the constructors are available on certain platforms only.

Log in to reply