What does the Q_OBJECT macro do? Why do all Qt objects need this macro?

From the Qt documentation: The Meta-Object Compiler, moc, is the program that handles Qt’s C++ extensions. The moc tool reads a C++ header file. If it finds one or more class declarations that contain the Q_OBJECT macro, it produces a C++ source file containing the meta-object code for those classes. Among other things, meta-object code … Read more

Qt: How do I handle the event of the user pressing the ‘X’ (close) button?

If you have a QMainWindow you can override closeEvent method. #include <QCloseEvent> void MainWindow::closeEvent (QCloseEvent *event) { QMessageBox::StandardButton resBtn = QMessageBox::question( this, APP_NAME, tr(“Are you sure?\n”), QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes, QMessageBox::Yes); if (resBtn != QMessageBox::Yes) { event->ignore(); } else { event->accept(); } } If you’re subclassing a QDialog, the closeEvent will not be called … Read more

Correct way to quit a Qt program?

QApplication is derived from QCoreApplication and thereby inherits quit() which is a public slot of QCoreApplication, so there is no difference between QApplication::quit() and QCoreApplication::quit(). As we can read in the documentation of QCoreApplication::quit() it “tells the application to exit with return code 0 (success).”. If you want to exit because you discovered file corruption … Read more

Beyond Stack Sampling: C++ Profilers

First: Time sampling profilers are more robust than CPU sampling profilers. I’m not extremely familiar with Windows development tools so I can’t say which ones are which. Most profilers are CPU sampling. A CPU sampling profiler grabs a stack trace every N instructions. This technique will reveal portions of your code that are CPU bound. … Read more

qmake: could not find a Qt installation of ”

sudo apt-get install qt5-default works for me. $ aptitude show qt5-default tells that This package sets Qt 5 to be the default Qt version to be used when using development binaries like qmake. It provides a default configuration for qtchooser, but does not prevent alternative Qt installations from being used.

Connecting overloaded signals and slots in Qt 5

The problem here is that there are two signals with that name: QSpinBox::valueChanged(int) and QSpinBox::valueChanged(QString). From Qt 5.7, there are helper functions provided to select the desired overload, so you can write connect(spinbox, qOverload<int>(&QSpinBox::valueChanged), slider, &QSlider::setValue); For Qt 5.6 and earlier, you need to tell Qt which one you want to pick, by casting it … Read more

How to enable C++11 in Qt Creator?

According to this site add CONFIG += c++11 to your .pro file (see at the bottom of that web page). It requires Qt 5. The other answers, suggesting QMAKE_CXXFLAGS += -std=c++11 (or QMAKE_CXXFLAGS += -std=c++0x) also work with Qt 4.8 and gcc / clang.