6.5.3 clean

This commit is contained in:
kleuter
2023-11-01 18:02:52 +01:00
parent bbe896803b
commit 7018d9e6c8
2170 changed files with 57471 additions and 43550 deletions

View File

@ -0,0 +1,8 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
if(NOT TARGET Qt6::Gui)
return()
endif()
qt_internal_add_example(windows)
qt_internal_add_example(qrasterwindow)

View File

@ -0,0 +1,5 @@
requires(qtHaveModule(gui))
TEMPLATE = subdirs
SUBDIRS = windows \
qrasterwindow

View File

@ -0,0 +1,35 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.16)
project(qrasterwindow LANGUAGES CXX)
if(NOT DEFINED INSTALL_EXAMPLESDIR)
set(INSTALL_EXAMPLESDIR "examples")
endif()
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/qpa/qrasterwindow")
find_package(Qt6 REQUIRED COMPONENTS Core Gui)
qt_standard_project_setup()
qt_add_executable(qrasterwindow
main.cpp
)
set_target_properties(qrasterwindow PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
target_link_libraries(qrasterwindow PRIVATE
Qt6::Core
Qt6::Gui
)
install(TARGETS qrasterwindow
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)

View File

@ -0,0 +1,91 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include <QRasterWindow>
#include <QPainter>
#include <QPainterPath>
#include <QGuiApplication>
#include <QMatrix4x4>
#include <QTimer>
static QPainterPath painterPathForTriangle()
{
static const QPointF bottomLeft(-1.0, -1.0);
static const QPointF top(0.0, 1.0);
static const QPointF bottomRight(1.0, -1.0);
QPainterPath path(bottomLeft);
path.lineTo(top);
path.lineTo(bottomRight);
path.closeSubpath();
return path;
}
class PaintedWindow : public QRasterWindow
{
Q_OBJECT
public:
PaintedWindow()
{
m_view.lookAt(QVector3D(3,1,1),
QVector3D(0,0,0),
QVector3D(0,1,0));
m_timer.setInterval(16);
connect(&m_timer, SIGNAL(timeout()), this, SLOT(update()));
m_timer.start();
}
protected:
void paintEvent(QPaintEvent *)
{
QPainter p(this);
p.fillRect(QRect(0,0,width(),height()),Qt::gray);
p.setWorldTransform(m_window_matrix.toTransform());
QMatrix4x4 mvp = m_projection * m_view * m_model;
p.setTransform(mvp.toTransform(), true);
p.fillPath(painterPathForTriangle(), m_brush);
m_model.rotate(1, 0, 1, 0);
}
void resizeEvent(QResizeEvent *)
{
m_window_matrix = QTransform();
m_window_matrix.translate(width() / 2.0, height() / 2.0);
m_window_matrix.scale(width() / 2.0, -height() / 2.0);
m_projection.setToIdentity();
m_projection.perspective(45.f, qreal(width()) / qreal(height()), 0.1f, 100.f);
QLinearGradient gradient(QPointF(-1,-1), QPointF(1,1));
gradient.setColorAt(0, Qt::red);
gradient.setColorAt(1, Qt::green);
m_brush = QBrush(gradient);
}
private:
QMatrix4x4 m_window_matrix;
QMatrix4x4 m_projection;
QMatrix4x4 m_view;
QMatrix4x4 m_model;
QBrush m_brush;
QTimer m_timer;
};
int main (int argc, char **argv)
{
QGuiApplication app(argc, argv);
PaintedWindow window;
window.create();
window.show();
return app.exec();
}
#include "main.moc"

View File

@ -0,0 +1,4 @@
SOURCES += main.cpp
target.path = $$[QT_INSTALL_EXAMPLES]/qpa/qrasterwindow
INSTALLS += target

View File

@ -0,0 +1,38 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.16)
project(windows LANGUAGES CXX)
if(NOT DEFINED INSTALL_EXAMPLESDIR)
set(INSTALL_EXAMPLESDIR "examples")
endif()
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/qpa/windows")
find_package(Qt6 REQUIRED COMPONENTS Core Gui)
qt_standard_project_setup()
qt_add_executable(windows
main.cpp
window.cpp window.h
)
set_target_properties(windows PROPERTIES
WIN32_EXECUTABLE FALSE
MACOSX_BUNDLE TRUE
)
target_link_libraries(windows PRIVATE
Qt6::Core
Qt6::CorePrivate
Qt6::Gui
Qt6::GuiPrivate
)
install(TARGETS windows
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)

View File

@ -0,0 +1,50 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include <QGuiApplication>
#include <QScreen>
#include <QRect>
#include <QSharedPointer>
#include "window.h"
int main(int argc, char **argv)
{
typedef QSharedPointer<QWindow> WindowPtr;
QGuiApplication app(argc, argv);
Window a;
a.setFramePosition(QPoint(10, 10));
a.setTitle(QStringLiteral("Window A"));
a.setObjectName(a.title());
a.setVisible(true);
Window b;
b.setFramePosition(QPoint(100, 100));
b.setTitle(QStringLiteral("Window B"));
b.setObjectName(b.title());
b.setVisible(true);
Window child(&b);
child.setObjectName(QStringLiteral("ChildOfB"));
child.setVisible(true);
// create one window on each additional screen as well
QList<WindowPtr> windows;
const QList<QScreen *> screens = app.screens();
for (QScreen *screen : screens) {
if (screen == app.primaryScreen())
continue;
WindowPtr window(new Window(screen));
QRect geometry = window->geometry();
geometry.moveCenter(screen->availableGeometry().center());
window->setGeometry(geometry);
window->setVisible(true);
window->setTitle(screen->name());
window->setObjectName(window->title());
windows.push_back(window);
}
return app.exec();
}

View File

@ -0,0 +1,164 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "window.h"
#include <private/qguiapplication_p.h>
#include <QBackingStore>
#include <QPainter>
static int colorIndexId = 0;
QColor colorTable[] =
{
QColor("#f09f8f"),
QColor("#a2bff2"),
QColor("#c0ef8f")
};
Window::Window(QScreen *screen)
: QWindow(screen)
, m_backgroundColorIndex(colorIndexId++)
{
initialize();
}
Window::Window(QWindow *parent)
: QWindow(parent)
, m_backgroundColorIndex(colorIndexId++)
{
initialize();
}
void Window::initialize()
{
if (parent())
setGeometry(QRect(160, 120, 320, 240));
else {
setFlags(flags() | Qt::WindowTitleHint | Qt::WindowSystemMenuHint
| Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
const QSize baseSize = QSize(640, 480);
setGeometry(QRect(geometry().topLeft(), baseSize));
setSizeIncrement(QSize(10, 10));
setBaseSize(baseSize);
setMinimumSize(QSize(240, 160));
setMaximumSize(QSize(800, 600));
}
create();
m_backingStore = new QBackingStore(this);
m_image = QImage(geometry().size(), QImage::Format_RGB32);
m_image.fill(colorTable[m_backgroundColorIndex % (sizeof(colorTable) / sizeof(colorTable[0]))].rgba());
m_lastPos = QPoint(-1, -1);
m_renderTimer = 0;
}
void Window::mousePressEvent(QMouseEvent *event)
{
m_lastPos = event->position().toPoint();
}
void Window::mouseMoveEvent(QMouseEvent *event)
{
if (m_lastPos != QPoint(-1, -1)) {
QPainter p(&m_image);
p.setRenderHint(QPainter::Antialiasing);
p.drawLine(m_lastPos, event->position().toPoint());
m_lastPos = event->position().toPoint();
scheduleRender();
}
}
void Window::mouseReleaseEvent(QMouseEvent *event)
{
if (m_lastPos != QPoint(-1, -1)) {
QPainter p(&m_image);
p.setRenderHint(QPainter::Antialiasing);
p.drawLine(m_lastPos, event->position().toPoint());
m_lastPos = QPoint(-1, -1);
scheduleRender();
}
}
void Window::exposeEvent(QExposeEvent *)
{
scheduleRender();
}
void Window::resizeEvent(QResizeEvent *)
{
QImage old = m_image;
int width = qMax(geometry().width(), old.width());
int height = qMax(geometry().height(), old.height());
if (width > old.width() || height > old.height()) {
m_image = QImage(width, height, QImage::Format_RGB32);
m_image.fill(colorTable[(m_backgroundColorIndex) % (sizeof(colorTable) / sizeof(colorTable[0]))].rgba());
QPainter p(&m_image);
p.drawImage(0, 0, old);
}
scheduleRender();
}
void Window::keyPressEvent(QKeyEvent *event)
{
switch (event->key()) {
case Qt::Key_Backspace:
m_text.chop(1);
break;
case Qt::Key_Enter:
case Qt::Key_Return:
m_text.append('\n');
break;
default:
m_text.append(event->text());
break;
}
scheduleRender();
}
void Window::scheduleRender()
{
if (!m_renderTimer)
m_renderTimer = startTimer(1);
}
void Window::timerEvent(QTimerEvent *)
{
if (isExposed())
render();
killTimer(m_renderTimer);
m_renderTimer = 0;
}
void Window::render()
{
QRect rect(QPoint(), geometry().size());
m_backingStore->resize(rect.size());
m_backingStore->beginPaint(rect);
QPaintDevice *device = m_backingStore->paintDevice();
QPainter p(device);
p.drawImage(0, 0, m_image);
QFont font;
font.setPixelSize(32);
p.setFont(font);
p.drawText(rect, 0, m_text);
m_backingStore->endPaint();
m_backingStore->flush(rect);
}

View File

@ -0,0 +1,41 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef WINDOW_H
#define WINDOW_H
#include <QWindow>
#include <QImage>
class Window : public QWindow
{
public:
Window(QWindow *parent = nullptr);
Window(QScreen *screen);
protected:
void mousePressEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
void keyPressEvent(QKeyEvent *) override;
void exposeEvent(QExposeEvent *) override;
void resizeEvent(QResizeEvent *) override;
void timerEvent(QTimerEvent *) override;
private:
void render();
void scheduleRender();
void initialize();
QString m_text;
QImage m_image;
QPoint m_lastPos;
int m_backgroundColorIndex;
QBackingStore *m_backingStore;
int m_renderTimer;
};
#endif // WINDOW_H

View File

@ -0,0 +1,9 @@
CONFIG += console
QT += gui-private core-private
HEADERS += window.h
SOURCES += window.cpp main.cpp
# install
target.path = $$[QT_INSTALL_EXAMPLES]/qpa/windows
INSTALLS += target