// Expose C++ class to QMLclass Backend : public QObject { Q_OBJECT Q_PROPERTY(QString message READ message WRITE setMessage NOTIFY messageChanged)public: QString message() const { return m_msg; } void setMessage(const QString& msg) { m_msg = msg; emit messageChanged(); }signals: void messageChanged();private: QString m_msg = "Hello from C++";};// Register in main.cppqmlRegisterType<Backend>("com.myapp", 1, 0, "Backend");// Use in QML// Backend { id: backend }// Text { text: backend.message }
Networking
#include <QNetworkAccessManager>#include <QNetworkRequest>#include <QNetworkReply>QNetworkAccessManager* manager = new QNetworkAccessManager(this);connect(manager, &QNetworkAccessManager::finished, [](QNetworkReply* reply) { if (reply->error() == QNetworkReply::NoError) { QByteArray data = reply->readAll(); qDebug() << data; } reply->deleteLater(); });manager->get(QNetworkRequest(QUrl("https://api.example.com/data")));
Database (Qt SQL)
#include <QSqlDatabase>#include <QSqlQuery>#include <QSqlError>QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("myapp.db");if (!db.open()) { qDebug() << "DB error:" << db.lastError().text(); return;}QSqlQuery query;query.exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");query.prepare("INSERT INTO users (name) VALUES (:name)");query.bindValue(":name", "Alice");query.exec();query.exec("SELECT id, name FROM users");while (query.next()) { int id = query.value(0).toInt(); QString name = query.value(1).toString(); qDebug() << id << name;}
Threading
#include <QThread>#include <QRunnable>#include <QThreadPool>// Worker using QRunnable + thread poolclass Worker : public QRunnable {public: void run() override { // heavy work here (runs in thread pool) qDebug() << "Running in thread:" << QThread::currentThreadId(); }};QThreadPool::globalInstance()->start(new Worker());// QtConcurrent for simple parallel tasks#include <QtConcurrent>QFuture<void> future = QtConcurrent::run([]() { // runs in thread pool});future.waitForFinished();