Unsolved Qt coding
-
I like C# for its very clear syntax. Could you please point me out how to write this piece of C# code in Qt to achieve best readability of the code:
Timer timer = new Timer();
timer.Elapsed += (sender, e) => { Console.WriteLine("Elapsed");};
timer.Interval = 100;
timer.Start();I like this code in C# because only 4 lines of code are sufficient to start timer and do some action when the timer elapses. Also I like that you can see all the functionality on one place (anonymous method). I hope something similar is achievable in Qt and C++.
-
QTimer has a good example of this in their documentation:
http://doc.qt.io/qt-4.8/qtimer.html
There's no anonymous function call, but the syntax is still pretty clear.
-
One note: Qt is not a programming language! Qt is a C++ framework (similar to what .Net framework is) and as such is usually used with C++ as programming language. But you can use Qt with other programming languages as well, for example Python.
C++ supports lambda functions since C++11 standard.
-
@elveatles So this seems to be minimal syntax, right?
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(elapsed()));
timer->start(1000);// then somewhere there is elapsed method:
void elapsed( void) {
qDebug() << "Elapsed"
}// Then in .h file I also need to declare elapsed().
void elapsed( void);
-
Yeah, That's the closest Qt translation.
-
@jsulm Sorry not to be very precise.
-
// with c++11
auto timer = new QTimer;
connect(timer, &QTimer::timeout, []{qDebug() << "Elapsed";});
timer->start(1000);