Krita Source Code Documentation
Loading...
Searching...
No Matches
KisQQuickPopupWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 Wolthera van Hovell tot Westerflier <griffinvalley@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include <KisQQuickWidget.h>
9#include <QQmlComponent>
10#include <QQmlError>
11#include <QHBoxLayout>
12
18
20 : QFrame(parent)
21 , d(new Private(this))
22{
23 setWindowFlags(Qt::Popup);
24 setFrameStyle(QFrame::StyledPanel | QFrame::Plain);
25 QHBoxLayout *layout = new QHBoxLayout(this);
26 d->quickWidget->setSource(QUrl("qrc:/KisQQuickPopupWidget.qml"));
27 connect(d->quickWidget, SIGNAL(statusChanged(QQuickWidget::Status)), this, SLOT(emitRootObjectReady()));
28
29 if (!d->quickWidget->errors().empty()) {
30 qWarning() << "Errors in Popup:" << d->quickWidget->errors();
31 }
32
33 d->quickWidget->setResizeMode(QQuickWidget::SizeViewToRootObject);
34
35 layout->addWidget(d->quickWidget);
36 layout->setContentsMargins(0, 0, 0, 0);
37}
38
43
45{
46 if (d->quickWidget->rootObject()) {
47 return d->quickWidget->rootObject();
48 }
49 qWarning() << "No Root Object!";
50 return nullptr;
51}
52
54{
55 return this->layout()->contentsMargins();
56}
57
58void KisQQuickPopupWidget::setLayoutMargins(const QMargins margins)
59{
60 this->layout()->setContentsMargins(margins);
61}
62
64{
65 if (event->matches(QKeySequence::Cancel)) {
66 event->accept();
67 hide();
68 } else {
69 QFrame::keyPressEvent(event);
70 }
71}
72
74{
75 if (e->type() == QEvent::Close) {
76 e->ignore();
77 hide();
78 return true;
79 }
80 return QFrame::event(e);
81}
82
84{
85 if (d->quickWidget->status() == QQuickWidget::Ready) {
86 Q_EMIT signalRootObjectReady();
87 }
88}
QQuickItem * rootObject() const
rootObject
QMargins layoutContentMargins() const
layoutContentMargins
QScopedPointer< Private > d
bool event(QEvent *e) override
KisQQuickPopupWidget(QWidget *parent=nullptr)
void setLayoutMargins(const QMargins margins)
setLayoutMargins calls layout()->setContentMargins(margins);
void keyPressEvent(QKeyEvent *event) override
Copied from KisPopupButton.cpp.
The KisQQuickWidget class.