Yuhang Zhao
2023-12-11 c77ab1212bd9a356ddeb03af6bb17c0bdf8ed955
tweak quick API
6个文件已修改
1个文件已添加
92 ■■■■ 已修改文件
examples/qml/main.cpp 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
examples/qml/main.qml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/CMakeLists.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/quickwindowagent.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/quickwindowagent.h 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/qwkquickglobal.cpp 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/qwkquickglobal.h 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
examples/qml/main.cpp
@@ -1,3 +1,4 @@
#include <QWKQuick/qwkquickglobal.h>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
@@ -13,6 +14,7 @@
    QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
    QGuiApplication application(argc, argv);
    QQmlApplicationEngine engine;
    QWK::registerTypes(&engine);
    engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
    return application.exec();
}
examples/qml/main.qml
@@ -1,9 +1,41 @@
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import QWindowKit 1.0
Window {
    id: window
    visible: true
    width: 640
    height: 480
    color: "#f0f0f0"
    title: qsTr("Hello, world!")
    Component.onCompleted: {
        windowAgent.setup(window)
        window.visible = true
    }
    WindowAgent {
        id: windowAgent
    }
    Rectangle {
        id: titleBar
        anchors {
            top: parent.top
            left: parent.left
            right: parent.right
        }
        height: 32
        color: "white"
        Component.onCompleted: windowAgent.setTitleBar(titleBar)
        Text {
            anchors.centerIn: parent
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            text: window.title
            font.pixelSize: 14
            color: window.active ? "black" : "gray"
        }
    }
}
src/quick/CMakeLists.txt
@@ -5,6 +5,7 @@
set(_src
    qwkquickglobal.h
    qwkquickglobal.cpp
    quickitemdelegate_p.h
    quickitemdelegate.cpp
    quickwindowagent.h
src/quick/quickwindowagent.cpp
@@ -72,12 +72,12 @@
        return d->context->isHitTestVisible(item);
    }
    void QuickWindowAgent::setHitTestVisible(const QQuickItem *item, bool visible) {
    void QuickWindowAgent::setHitTestVisible_item(const QQuickItem *item, bool visible) {
        Q_D(QuickWindowAgent);
        d->context->setHitTestVisible(item, visible);
    }
    void QuickWindowAgent::setHitTestVisible(const QRect &rect, bool visible) {
    void QuickWindowAgent::setHitTestVisible_rect(const QRect &rect, bool visible) {
        Q_D(QuickWindowAgent);
        d->context->setHitTestVisible(rect, visible);
    }
src/quick/quickwindowagent.h
@@ -19,17 +19,20 @@
        ~QuickWindowAgent() override;
    public:
        bool setup(QQuickWindow *window);
        Q_INVOKABLE bool setup(QQuickWindow *window);
        const QQuickItem *titleBar() const;
        void setTitleBar(const QQuickItem *item);
        Q_INVOKABLE const QQuickItem *titleBar() const;
        Q_INVOKABLE void setTitleBar(const QQuickItem *item);
        const QQuickItem *systemButton(SystemButton button) const;
        void setSystemButton(SystemButton button, const QQuickItem *item);
        Q_INVOKABLE const QQuickItem *systemButton(SystemButton button) const;
        Q_INVOKABLE void setSystemButton(SystemButton button, const QQuickItem *item);
        bool isHitTestVisible(const QQuickItem *item) const;
        void setHitTestVisible(const QQuickItem *item, bool visible = true);
        void setHitTestVisible(const QRect &rect, bool visible = true);
        Q_INVOKABLE bool isHitTestVisible(const QQuickItem *item) const;
        Q_INVOKABLE inline void setHitTestVisible(const QQuickItem *item, bool visible = true) {
            setHitTestVisible_item(item, visible);
        }
        Q_INVOKABLE void setHitTestVisible_item(const QQuickItem *item, bool visible = true);
        Q_INVOKABLE void setHitTestVisible_rect(const QRect &rect, bool visible = true);
    Q_SIGNALS:
        void titleBarWidgetChanged(const QQuickItem *item);
src/quick/qwkquickglobal.cpp
New file
@@ -0,0 +1,22 @@
#include "qwkquickglobal.h"
#include "quickwindowagent.h"
#include <QtQml/QQmlEngine>
namespace QWK {
    static constexpr const char kModuleUri[] = "QWindowKit";
    void registerTypes(QQmlEngine *engine) {
        Q_UNUSED(engine);
        static bool once = false;
        if (once) {
            return;
        }
        once = true;
        qmlRegisterType<QuickWindowAgent>(kModuleUri, 1, 0, "WindowAgent");
        qmlRegisterModule(kModuleUri, 1, 0);
    }
}
src/quick/qwkquickglobal.h
@@ -15,4 +15,14 @@
#  endif
#endif
QT_BEGIN_NAMESPACE
class QQmlEngine;
QT_END_NAMESPACE
namespace QWK {
    QWK_QUICK_EXPORT void registerTypes(QQmlEngine *engine);
}
#endif // QWKQUICKGLOBAL_H