Qt going LGPL
Dave Smith
dave at thesmithfam.org
Wed Jan 14 11:42:18 MST 2009
Barry Roberts wrote:
> And even some of us with only a mild distaste for C++ find Qt
> unattractive because you don't REALLY write C++. At least the last
> time I checked, you wrote in a very C++-like language that moc
> pre-processed to C++. That gave me a rash. I can understand why they
> did it, but I would argue that it's not C++.
That's a common misconception. The moc does not actually translate
anything. All the Qt code you write is honest-to-goodness compilable
C++. The moc generates companion C++ files that get built and linked in
to your executable by parsing your C++ code and looking for keywords
like "signals:" and "slots:". The terms "signals" and "slots" are
actually pre-processor defines that are defined to nothing.
For example. Here's a QObject-derived class:
class MyObject : public QObject
{
Q_OBJECT
public:
MyObject(QObject *parent=0);
public slots:
void mySlot();
signals:
void mySignal();
}
In this case, Q_OBJECT is a macro that expands to some code needed by
QObject to enable signals and slots. The term "slots" and "signals" are
both macros that expand to nothing.
The moc will come in and see the word "slots" and "signals" and generate
a file called moc_MyObject.cxx and is also compilable C++ code, which
contains all the signal and slot handling code.
Be it known that Qt *is* C++. There is no language translation at all.
I've been hacking Qt code for about 4 years, and I love it. I highly
recommend it for any GUI project. I even use it on the server-side
because it provides such a rich framework of functionality. Everything
from regex to strings to sockets.
--Dave
More information about the PLUG
mailing list