Jump to content

Qt for HarmonyOS/qtohosextras doc/Native Window ID Example - main.cpp

From Qt Wiki
Revision as of 06:00, 17 September 2026 by Shawn Luo (talk | contribs) (Drop manual breadcrumb, MediaWiki renders it automatically (QTFOROH-2307))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Native Window ID Example - main.cpp

 // Copyright (C) 2025 The Qt Company Ltd.
 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

 #include <QApplication>
 #include <QPushButton>
 #include <QSize>
 #include <QString>
 #include <QVBoxLayout>
 #include <QWidget>
 #include <QtOhosExtras>

 namespace {

 constexpr QSize defaultWindowSize = {500, 100};

 void setWindowTitleToNativeId(QWidget *window)
 {
     auto nativeWindowId = QtOhosExtras::tryGetNativeWindowId(window->windowHandle());
     window->setWindowTitle("ID: " + (nativeWindowId != nullptr ? QString::number(*nativeWindowId) : "<invalid>"));
 }

 }

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QWidget window;
     QPushButton button("Create window");
     QObject::connect(
         &button, &QPushButton::clicked, &window,
         [&window]() {
             auto *newWindow = new QWidget(&window);
             newWindow->setWindowFlags(Qt::Window);
             newWindow->resize(defaultWindowSize);
             newWindow->show();
             setWindowTitleToNativeId(newWindow);
         });

     QVBoxLayout layout;
     layout.addWidget(&button);

     window.setLayout(&layout);
     window.resize(defaultWindowSize);
     window.show();
     setWindowTitleToNativeId(&window);

     return app.exec();
 }