[Development] A new approach for Qt main()
Simon Hausmann
Simon.Hausmann at qt.io
Tue Dec 13 11:25:58 CET 2016
Apologies, I should've expanded a little more on what I said. For example if we expose a QObject class to Qt instead of a function, then we could dispatch a static meta-call to a static initialization function that is called before the constructor, if present. Introspection makes that quite easy I think.
Simon
________________________________
From: Simon Hausmann
Sent: Tuesday, December 13, 2016 11:24:48 AM
To: Laszlo Agocs; Mathias Hasselmann; development at qt-project.org
Subject: Re: [Development] A new approach for Qt main()
Hi,
I don't think it does handle those cases. But we're not talking about eliminating main(), we're talking about a second supported "launch" method.
That said, it's still possible to run code before the constructor, although it's not pretty.
Simon
________________________________
From: Laszlo Agocs
Sent: Tuesday, December 13, 2016 10:42:05 AM
To: Simon Hausmann; Mathias Hasselmann; development at qt-project.org
Subject: RE: [Development] A new approach for Qt main()
Hi,
How does this handle the cases that need code before the QGuiApplication construction? AFAICS it does not.
Laszlo
From: Development [mailto:development-bounces+laszlo.agocs=qt.io at qt-project.org] On Behalf Of Simon Hausmann
Sent: Tuesday, December 13, 2016 10:37 AM
To: Mathias Hasselmann <mathias at taschenorakel.de>; development at qt-project.org
Subject: Re: [Development] A new approach for Qt main()
Hi,
The joke of the bikeshedding aside I for one do like the idea of exporting a QObject sub-class instead of a function. That makes it easier to extend in the future with more entry-points as slots for example.
Simon
________________________________
From: Development <development-bounces+simon.hausmann=qt.io at qt-project.org<mailto:development-bounces+simon.hausmann=qt.io at qt-project.org>> on behalf of Mathias Hasselmann <mathias at taschenorakel.de<mailto:mathias at taschenorakel.de>>
Sent: Monday, December 12, 2016 7:53:50 PM
To: development at qt-project.org<mailto:development at qt-project.org>
Subject: Re: [Development] A new approach for Qt main()
Hi,
Seems this turned into a nice bike shed discussion quickly, so let me
use the chance to present my preferred Qt main(). I am totally convinced
that this one should rule the Qt world:
class BlueBikeShedApplication : public QApplication
{
Q_OBJECT
public:
using QApplication::QApplication;
int run()
{
if (!parseCommandLine())
return EXIT_FAILURE;
if (!initializeColorBucket())
return EXIT_FAILURE;
setupBrush();
return exec();
}
};
int main(int argc, char *argv[])
{
return BlueBikeShedApplication{argc, argv}.run();
}
The big advantage I see in this approach is, that you work within a
proper QObject context with fully setup QApplication early. Also this
main() is sufficiently generic to be hidden in a platform specific
macro, or static library.
Thank you for reading,
Mathias
_______________________________________________
Development mailing list
Development at qt-project.org<mailto:Development at qt-project.org>
http://lists.qt-project.org/mailman/listinfo/development
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20161213/265009b0/attachment.html>
More information about the Development
mailing list