diff options
Diffstat (limited to 'examples/widgets')
305 files changed, 5904 insertions, 5447 deletions
diff --git a/examples/widgets/animation/animatedtiles/CMakeLists.txt b/examples/widgets/animation/animatedtiles/CMakeLists.txt index d35fd9cf92..b8755a3321 100644 --- a/examples/widgets/animation/animatedtiles/CMakeLists.txt +++ b/examples/widgets/animation/animatedtiles/CMakeLists.txt @@ -9,18 +9,40 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/animation/animatedtiles") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(animatedtiles - animatedtiles.qrc main.cpp ) target_link_libraries(animatedtiles PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(animatedtiles_resource_files + "images/Time-For-Lunch-2.jpg" + "images/centered.png" + "images/ellipse.png" + "images/figure8.png" + "images/kinetic.png" + "images/random.png" + "images/tile.png" +) + +qt6_add_resources(animatedtiles "animatedtiles" + PREFIX + "/" + FILES + ${animatedtiles_resource_files} +) + install(TARGETS animatedtiles RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/animation/easing/CMakeLists.txt b/examples/widgets/animation/easing/CMakeLists.txt index 76750aac54..6b09e45cff 100644 --- a/examples/widgets/animation/easing/CMakeLists.txt +++ b/examples/widgets/animation/easing/CMakeLists.txt @@ -9,21 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/animation/easing") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(easing animation.h - easing.qrc form.ui main.cpp window.cpp window.h ) target_link_libraries(easing PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(easing_resource_files + "images/qt-logo.png" +) + +qt6_add_resources(easing "easing" + PREFIX + "/" + FILES + ${easing_resource_files} +) + install(TARGETS easing RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/animation/easing/window.cpp b/examples/widgets/animation/easing/window.cpp index d1d6348361..7b4fe1d912 100644 --- a/examples/widgets/animation/easing/window.cpp +++ b/examples/widgets/animation/easing/window.cpp @@ -67,13 +67,13 @@ Window::Window(QWidget *parent) connect(m_ui.easingCurvePicker, &QListWidget::currentRowChanged, this, &Window::curveChanged); - connect(m_ui.buttonGroup, QOverload<int>::of(&QButtonGroup::buttonClicked), + connect(m_ui.buttonGroup, &QButtonGroup::buttonClicked, this, &Window::pathChanged); - connect(m_ui.periodSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), + connect(m_ui.periodSpinBox, &QDoubleSpinBox::valueChanged, this, &Window::periodChanged); - connect(m_ui.amplitudeSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), + connect(m_ui.amplitudeSpinBox, &QDoubleSpinBox::valueChanged, this, &Window::amplitudeChanged); - connect(m_ui.overshootSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), + connect(m_ui.overshootSpinBox, &QDoubleSpinBox::valueChanged, this, &Window::overshootChanged); createCurveIcons(); @@ -180,9 +180,10 @@ void Window::curveChanged(int row) m_ui.overshootSpinBox->setEnabled(curveType >= QEasingCurve::InBack && curveType <= QEasingCurve::OutInBack); } -void Window::pathChanged(int index) +void Window::pathChanged(QAbstractButton *button) { - m_anim->setPathType((Animation::PathType)index); + const int index = m_ui.buttonGroup->id(button); + m_anim->setPathType(Animation::PathType(index)); } void Window::periodChanged(double value) diff --git a/examples/widgets/animation/easing/window.h b/examples/widgets/animation/easing/window.h index 541377a981..0c49dd6e8a 100644 --- a/examples/widgets/animation/easing/window.h +++ b/examples/widgets/animation/easing/window.h @@ -69,7 +69,7 @@ public: Window(QWidget *parent = nullptr); private slots: void curveChanged(int row); - void pathChanged(int index); + void pathChanged(QAbstractButton *button); void periodChanged(double); void amplitudeChanged(double); void overshootChanged(double); diff --git a/examples/widgets/animation/moveblocks/CMakeLists.txt b/examples/widgets/animation/moveblocks/CMakeLists.txt index e522d72477..c5219c9e6a 100644 --- a/examples/widgets/animation/moveblocks/CMakeLists.txt +++ b/examples/widgets/animation/moveblocks/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/animation/moveblocks") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(moveblocks main.cpp ) target_link_libraries(moveblocks PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/animation/states/CMakeLists.txt b/examples/widgets/animation/states/CMakeLists.txt index e8d1d42f03..cddcc6a7a3 100644 --- a/examples/widgets/animation/states/CMakeLists.txt +++ b/examples/widgets/animation/states/CMakeLists.txt @@ -9,18 +9,39 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/animation/states") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(states main.cpp - states.qrc ) target_link_libraries(states PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(states_resource_files + "accessories-dictionary.png" + "akregator.png" + "digikam.png" + "help-browser.png" + "k3b.png" + "kchart.png" +) + +qt6_add_resources(states "states" + PREFIX + "/" + FILES + ${states_resource_files} +) + install(TARGETS states RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/animation/stickman/CMakeLists.txt b/examples/widgets/animation/stickman/CMakeLists.txt index 4c76380f51..791e685fc2 100644 --- a/examples/widgets/animation/stickman/CMakeLists.txt +++ b/examples/widgets/animation/stickman/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/animation/stickman") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(stickman @@ -20,12 +22,30 @@ add_qt_gui_executable(stickman main.cpp node.cpp node.h rectbutton.cpp rectbutton.h - stickman.cpp stickman.h stickman.qrc + stickman.cpp stickman.h ) target_link_libraries(stickman PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(stickman_resource_files + "animations/chilling.bin" + "animations/dancing.bin" + "animations/dead.bin" + "animations/jumping.bin" +) + +qt6_add_resources(stickman "stickman" + PREFIX + "/" + FILES + ${stickman_resource_files} +) + install(TARGETS stickman RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/animation/sub-attaq/.prev_CMakeLists.txt b/examples/widgets/animation/sub-attaq/.prev_CMakeLists.txt new file mode 100644 index 0000000000..74f095f4f6 --- /dev/null +++ b/examples/widgets/animation/sub-attaq/.prev_CMakeLists.txt @@ -0,0 +1,192 @@ +# Generated from sub-attaq.pro. + +cmake_minimum_required(VERSION 3.14) +project(sub-attaq LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/animation/sub-attaq") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(sub-attaq + animationmanager.cpp animationmanager.h + boat.cpp boat.h boat_p.h + bomb.cpp bomb.h + graphicsscene.cpp graphicsscene.h + main.cpp + mainwindow.cpp mainwindow.h + pixmapitem.cpp pixmapitem.h + progressitem.cpp progressitem.h + qanimationstate.cpp qanimationstate.h + states.cpp states.h + submarine.cpp submarine.h submarine_p.h + textinformationitem.cpp textinformationitem.h + torpedo.cpp torpedo.h +) +target_link_libraries(sub-attaq PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set_source_files_properties("pics/big/background.png" + PROPERTIES QT_RESOURCE_ALIAS "big/background" +) +set_source_files_properties("pics/big/boat.png" + PROPERTIES QT_RESOURCE_ALIAS "big/boat" +) +set_source_files_properties("pics/big/bomb.png" + PROPERTIES QT_RESOURCE_ALIAS "big/bomb" +) +set_source_files_properties("pics/big/explosion/boat/step1.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/boat/step1" +) +set_source_files_properties("pics/big/explosion/boat/step2.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/boat/step2" +) +set_source_files_properties("pics/big/explosion/boat/step3.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/boat/step3" +) +set_source_files_properties("pics/big/explosion/boat/step4.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/boat/step4" +) +set_source_files_properties("pics/big/explosion/submarine/step1.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/submarine/step1" +) +set_source_files_properties("pics/big/explosion/submarine/step2.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/submarine/step2" +) +set_source_files_properties("pics/big/explosion/submarine/step3.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/submarine/step3" +) +set_source_files_properties("pics/big/explosion/submarine/step4.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/submarine/step4" +) +set_source_files_properties("pics/big/submarine.png" + PROPERTIES QT_RESOURCE_ALIAS "big/submarine" +) +set_source_files_properties("pics/big/surface.png" + PROPERTIES QT_RESOURCE_ALIAS "big/surface" +) +set_source_files_properties("pics/big/torpedo.png" + PROPERTIES QT_RESOURCE_ALIAS "big/torpedo" +) +set_source_files_properties("pics/scalable/boat.svg" + PROPERTIES QT_RESOURCE_ALIAS "boat" +) +set_source_files_properties("pics/scalable/sub-attaq.svg" + PROPERTIES QT_RESOURCE_ALIAS "all" +) +set_source_files_properties("pics/scalable/submarine.svg" + PROPERTIES QT_RESOURCE_ALIAS "submarine" +) +set_source_files_properties("pics/scalable/torpedo.svg" + PROPERTIES QT_RESOURCE_ALIAS "torpedo" +) +set_source_files_properties("pics/small/background.png" + PROPERTIES QT_RESOURCE_ALIAS "small/background" +) +set_source_files_properties("pics/small/boat.png" + PROPERTIES QT_RESOURCE_ALIAS "small/boat" +) +set_source_files_properties("pics/small/bomb.png" + PROPERTIES QT_RESOURCE_ALIAS "small/bomb" +) +set_source_files_properties("pics/small/submarine.png" + PROPERTIES QT_RESOURCE_ALIAS "small/submarine" +) +set_source_files_properties("pics/small/surface.png" + PROPERTIES QT_RESOURCE_ALIAS "small/surface" +) +set_source_files_properties("pics/small/torpedo.png" + PROPERTIES QT_RESOURCE_ALIAS "small/torpedo" +) +set_source_files_properties("pics/welcome/logo-a.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-a" +) +set_source_files_properties("pics/welcome/logo-a2.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-a2" +) +set_source_files_properties("pics/welcome/logo-b.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-b" +) +set_source_files_properties("pics/welcome/logo-dash.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-dash" +) +set_source_files_properties("pics/welcome/logo-excl.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-excl" +) +set_source_files_properties("pics/welcome/logo-q.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-q" +) +set_source_files_properties("pics/welcome/logo-s.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-s" +) +set_source_files_properties("pics/welcome/logo-t.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-t" +) +set_source_files_properties("pics/welcome/logo-t2.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-t2" +) +set_source_files_properties("pics/welcome/logo-u.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-u" +) +set(subattaq_resource_files + "data.xml" + "pics/big/background.png" + "pics/big/boat.png" + "pics/big/bomb.png" + "pics/big/explosion/boat/step1.png" + "pics/big/explosion/boat/step2.png" + "pics/big/explosion/boat/step3.png" + "pics/big/explosion/boat/step4.png" + "pics/big/explosion/submarine/step1.png" + "pics/big/explosion/submarine/step2.png" + "pics/big/explosion/submarine/step3.png" + "pics/big/explosion/submarine/step4.png" + "pics/big/submarine.png" + "pics/big/surface.png" + "pics/big/torpedo.png" + "pics/scalable/boat.svg" + "pics/scalable/sub-attaq.svg" + "pics/scalable/submarine.svg" + "pics/scalable/torpedo.svg" + "pics/small/background.png" + "pics/small/boat.png" + "pics/small/bomb.png" + "pics/small/submarine.png" + "pics/small/surface.png" + "pics/small/torpedo.png" + "pics/welcome/logo-a.png" + "pics/welcome/logo-a2.png" + "pics/welcome/logo-b.png" + "pics/welcome/logo-dash.png" + "pics/welcome/logo-excl.png" + "pics/welcome/logo-q.png" + "pics/welcome/logo-s.png" + "pics/welcome/logo-t.png" + "pics/welcome/logo-t2.png" + "pics/welcome/logo-u.png" +) + +qt6_add_resources(sub-attaq "subattaq" + PREFIX + "/" + FILES + ${subattaq_resource_files} +) + +install(TARGETS sub-attaq + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/animation/sub-attaq/CMakeLists.txt b/examples/widgets/animation/sub-attaq/CMakeLists.txt index 52bed5c278..2e4e455b34 100644 --- a/examples/widgets/animation/sub-attaq/CMakeLists.txt +++ b/examples/widgets/animation/sub-attaq/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/animation/sub-attaq") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS OpenGL) # special case @@ -25,17 +27,164 @@ add_qt_gui_executable(sub-attaq progressitem.cpp progressitem.h qanimationstate.cpp qanimationstate.h states.cpp states.h - subattaq.qrc submarine.cpp submarine.h submarine_p.h textinformationitem.cpp textinformationitem.h torpedo.cpp torpedo.h ) target_link_libraries(sub-attaq PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) -if (TARGET Qt::OpenGL) - target_link_libraries(sub-attaq PUBLIC Qt::OpenGL) -endif() + + +# Resources: +set_source_files_properties("pics/big/background.png" + PROPERTIES QT_RESOURCE_ALIAS "big/background" +) +set_source_files_properties("pics/big/boat.png" + PROPERTIES QT_RESOURCE_ALIAS "big/boat" +) +set_source_files_properties("pics/big/bomb.png" + PROPERTIES QT_RESOURCE_ALIAS "big/bomb" +) +set_source_files_properties("pics/big/explosion/boat/step1.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/boat/step1" +) +set_source_files_properties("pics/big/explosion/boat/step2.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/boat/step2" +) +set_source_files_properties("pics/big/explosion/boat/step3.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/boat/step3" +) +set_source_files_properties("pics/big/explosion/boat/step4.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/boat/step4" +) +set_source_files_properties("pics/big/explosion/submarine/step1.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/submarine/step1" +) +set_source_files_properties("pics/big/explosion/submarine/step2.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/submarine/step2" +) +set_source_files_properties("pics/big/explosion/submarine/step3.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/submarine/step3" +) +set_source_files_properties("pics/big/explosion/submarine/step4.png" + PROPERTIES QT_RESOURCE_ALIAS "big/explosion/submarine/step4" +) +set_source_files_properties("pics/big/submarine.png" + PROPERTIES QT_RESOURCE_ALIAS "big/submarine" +) +set_source_files_properties("pics/big/surface.png" + PROPERTIES QT_RESOURCE_ALIAS "big/surface" +) +set_source_files_properties("pics/big/torpedo.png" + PROPERTIES QT_RESOURCE_ALIAS "big/torpedo" +) +set_source_files_properties("pics/scalable/boat.svg" + PROPERTIES QT_RESOURCE_ALIAS "boat" +) +set_source_files_properties("pics/scalable/sub-attaq.svg" + PROPERTIES QT_RESOURCE_ALIAS "all" +) +set_source_files_properties("pics/scalable/submarine.svg" + PROPERTIES QT_RESOURCE_ALIAS "submarine" +) +set_source_files_properties("pics/scalable/torpedo.svg" + PROPERTIES QT_RESOURCE_ALIAS "torpedo" +) +set_source_files_properties("pics/small/background.png" + PROPERTIES QT_RESOURCE_ALIAS "small/background" +) +set_source_files_properties("pics/small/boat.png" + PROPERTIES QT_RESOURCE_ALIAS "small/boat" +) +set_source_files_properties("pics/small/bomb.png" + PROPERTIES QT_RESOURCE_ALIAS "small/bomb" +) +set_source_files_properties("pics/small/submarine.png" + PROPERTIES QT_RESOURCE_ALIAS "small/submarine" +) +set_source_files_properties("pics/small/surface.png" + PROPERTIES QT_RESOURCE_ALIAS "small/surface" +) +set_source_files_properties("pics/small/torpedo.png" + PROPERTIES QT_RESOURCE_ALIAS "small/torpedo" +) +set_source_files_properties("pics/welcome/logo-a.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-a" +) +set_source_files_properties("pics/welcome/logo-a2.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-a2" +) +set_source_files_properties("pics/welcome/logo-b.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-b" +) +set_source_files_properties("pics/welcome/logo-dash.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-dash" +) +set_source_files_properties("pics/welcome/logo-excl.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-excl" +) +set_source_files_properties("pics/welcome/logo-q.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-q" +) +set_source_files_properties("pics/welcome/logo-s.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-s" +) +set_source_files_properties("pics/welcome/logo-t.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-t" +) +set_source_files_properties("pics/welcome/logo-t2.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-t2" +) +set_source_files_properties("pics/welcome/logo-u.png" + PROPERTIES QT_RESOURCE_ALIAS "logo-u" +) +set(subattaq_resource_files + "data.xml" + "pics/big/background.png" + "pics/big/boat.png" + "pics/big/bomb.png" + "pics/big/explosion/boat/step1.png" + "pics/big/explosion/boat/step2.png" + "pics/big/explosion/boat/step3.png" + "pics/big/explosion/boat/step4.png" + "pics/big/explosion/submarine/step1.png" + "pics/big/explosion/submarine/step2.png" + "pics/big/explosion/submarine/step3.png" + "pics/big/explosion/submarine/step4.png" + "pics/big/submarine.png" + "pics/big/surface.png" + "pics/big/torpedo.png" + "pics/scalable/boat.svg" + "pics/scalable/sub-attaq.svg" + "pics/scalable/submarine.svg" + "pics/scalable/torpedo.svg" + "pics/small/background.png" + "pics/small/boat.png" + "pics/small/bomb.png" + "pics/small/submarine.png" + "pics/small/surface.png" + "pics/small/torpedo.png" + "pics/welcome/logo-a.png" + "pics/welcome/logo-a2.png" + "pics/welcome/logo-b.png" + "pics/welcome/logo-dash.png" + "pics/welcome/logo-excl.png" + "pics/welcome/logo-q.png" + "pics/welcome/logo-s.png" + "pics/welcome/logo-t.png" + "pics/welcome/logo-t2.png" + "pics/welcome/logo-u.png" +) + +qt6_add_resources(sub-attaq "subattaq" + PREFIX + "/" + FILES + ${subattaq_resource_files} +) install(TARGETS sub-attaq RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/animation/sub-attaq/mainwindow.cpp b/examples/widgets/animation/sub-attaq/mainwindow.cpp index 8f545ecebd..0c152c9180 100644 --- a/examples/widgets/animation/sub-attaq/mainwindow.cpp +++ b/examples/widgets/animation/sub-attaq/mainwindow.cpp @@ -56,12 +56,9 @@ #include <QGraphicsView> #include <QApplication> #include <QMenu> +#include <QMenuBar> #include <QLayout> -#ifndef QT_NO_OPENGL -# include <QtOpenGL> -#endif - MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { @@ -83,14 +80,5 @@ MainWindow::MainWindow(QWidget *parent) view = new QGraphicsView(scene, this); view->setAlignment(Qt::AlignLeft | Qt::AlignTop); scene->setupScene(newAction, quitAction); -#ifndef QT_NO_OPENGL - QGLWidget *glWidget = new QGLWidget(QGLFormat(QGL::SampleBuffers)); - if (glWidget->context()->isValid()) { - view->setViewport(glWidget); - } else { - qWarning("Unable to create an Open GL context with sample buffers, not using Open GL."); - delete glWidget; - } -#endif setCentralWidget(view); } diff --git a/examples/widgets/animation/sub-attaq/sub-attaq.pro b/examples/widgets/animation/sub-attaq/sub-attaq.pro index ac79fd4249..ea44253fa1 100644 --- a/examples/widgets/animation/sub-attaq/sub-attaq.pro +++ b/examples/widgets/animation/sub-attaq/sub-attaq.pro @@ -1,5 +1,4 @@ QT += widgets -qtHaveModule(opengl): QT += opengl HEADERS += boat.h \ bomb.h \ mainwindow.h \ diff --git a/examples/widgets/desktop/screenshot/CMakeLists.txt b/examples/widgets/desktop/screenshot/CMakeLists.txt index 9b85cc591e..3145dd41e5 100644 --- a/examples/widgets/desktop/screenshot/CMakeLists.txt +++ b/examples/widgets/desktop/screenshot/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/desktop/screenshot") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(screenshot @@ -18,6 +20,8 @@ add_qt_gui_executable(screenshot screenshot.cpp screenshot.h ) target_link_libraries(screenshot PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/desktop/screenshot/screenshot.cpp b/examples/widgets/desktop/screenshot/screenshot.cpp index ce5597bbdd..bcbf99dd41 100644 --- a/examples/widgets/desktop/screenshot/screenshot.cpp +++ b/examples/widgets/desktop/screenshot/screenshot.cpp @@ -70,7 +70,7 @@ Screenshot::Screenshot() delaySpinBox->setSuffix(tr(" s")); delaySpinBox->setMaximum(60); - connect(delaySpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(delaySpinBox, &QSpinBox::valueChanged, this, &Screenshot::updateCheckBox); hideThisWindowCheckBox = new QCheckBox(tr("Hide This Window"), optionsGroupBox); diff --git a/examples/widgets/desktop/systray/CMakeLists.txt b/examples/widgets/desktop/systray/CMakeLists.txt index 0086b79229..16af7808d7 100644 --- a/examples/widgets/desktop/systray/CMakeLists.txt +++ b/examples/widgets/desktop/systray/CMakeLists.txt @@ -9,19 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/desktop/systray") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(systray main.cpp - systray.qrc window.cpp window.h ) target_link_libraries(systray PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(systray_resource_files + "images/bad.png" + "images/heart.png" + "images/trash.png" +) + +qt6_add_resources(systray "systray" + PREFIX + "/" + FILES + ${systray_resource_files} +) + install(TARGETS systray RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/desktop/systray/doc/src/systray.qdoc b/examples/widgets/desktop/systray/doc/src/systray.qdoc index fe397f83df..ae7e925bd8 100644 --- a/examples/widgets/desktop/systray/doc/src/systray.qdoc +++ b/examples/widgets/desktop/systray/doc/src/systray.qdoc @@ -182,6 +182,6 @@ In addition to the functions and slots discussed above, we have also implemented several convenience functions to simplify the constructor: \c createIconGroupBox(), \c createMessageGroupBox(), - \c createActions() and \c createTrayIcon(). See the \l - {desktop/systray/window.cpp}{window.cpp} file for details. + \c createActions() and \c createTrayIcon(). See the \c + {desktop/systray/window.cpp} file for details. */ diff --git a/examples/widgets/dialogs/classwizard/CMakeLists.txt b/examples/widgets/dialogs/classwizard/CMakeLists.txt index 51c4c9e351..0a85f02b21 100644 --- a/examples/widgets/dialogs/classwizard/CMakeLists.txt +++ b/examples/widgets/dialogs/classwizard/CMakeLists.txt @@ -9,18 +9,41 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/dialogs/classwizard") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(classwizard - classwizard.cpp classwizard.h classwizard.qrc + classwizard.cpp classwizard.h main.cpp ) target_link_libraries(classwizard PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(classwizard_resource_files + "images/background.png" + "images/banner.png" + "images/logo1.png" + "images/logo2.png" + "images/logo3.png" + "images/watermark1.png" + "images/watermark2.png" +) + +qt6_add_resources(classwizard "classwizard" + PREFIX + "/" + FILES + ${classwizard_resource_files} +) + install(TARGETS classwizard RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/dialogs/extension/CMakeLists.txt b/examples/widgets/dialogs/extension/CMakeLists.txt index 108858868c..dfac53a3f6 100644 --- a/examples/widgets/dialogs/extension/CMakeLists.txt +++ b/examples/widgets/dialogs/extension/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/dialogs/extension") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(extension @@ -18,6 +20,8 @@ add_qt_gui_executable(extension main.cpp ) target_link_libraries(extension PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/dialogs/findfiles/CMakeLists.txt b/examples/widgets/dialogs/findfiles/CMakeLists.txt index 27e2265e70..42681ca424 100644 --- a/examples/widgets/dialogs/findfiles/CMakeLists.txt +++ b/examples/widgets/dialogs/findfiles/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/dialogs/findfiles") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(findfiles @@ -18,6 +20,8 @@ add_qt_gui_executable(findfiles window.cpp window.h ) target_link_libraries(findfiles PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/dialogs/licensewizard/CMakeLists.txt b/examples/widgets/dialogs/licensewizard/CMakeLists.txt index 9684cd8171..20b4b7d799 100644 --- a/examples/widgets/dialogs/licensewizard/CMakeLists.txt +++ b/examples/widgets/dialogs/licensewizard/CMakeLists.txt @@ -9,20 +9,38 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/dialogs/licensewizard") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS PrintSupport) add_qt_gui_executable(licensewizard - licensewizard.cpp licensewizard.h licensewizard.qrc + licensewizard.cpp licensewizard.h main.cpp ) target_link_libraries(licensewizard PUBLIC + Qt::Core + Qt::Gui Qt::PrintSupport Qt::Widgets ) + +# Resources: +set(licensewizard_resource_files + "images/logo.png" + "images/watermark.png" +) + +qt6_add_resources(licensewizard "licensewizard" + PREFIX + "/" + FILES + ${licensewizard_resource_files} +) + install(TARGETS licensewizard RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/dialogs/standarddialogs/CMakeLists.txt b/examples/widgets/dialogs/standarddialogs/CMakeLists.txt index 2e1a84a4f0..ed4c11b041 100644 --- a/examples/widgets/dialogs/standarddialogs/CMakeLists.txt +++ b/examples/widgets/dialogs/standarddialogs/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/dialogs/standarddialogs") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(standarddialogs @@ -18,6 +20,8 @@ add_qt_gui_executable(standarddialogs main.cpp ) target_link_libraries(standarddialogs PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/dialogs/standarddialogs/dialog.cpp b/examples/widgets/dialogs/standarddialogs/dialog.cpp index df77d03567..77549e60f8 100644 --- a/examples/widgets/dialogs/standarddialogs/dialog.cpp +++ b/examples/widgets/dialogs/standarddialogs/dialog.cpp @@ -492,7 +492,7 @@ void Dialog::questionMessage() void Dialog::warningMessage() { QMessageBox msgBox(QMessageBox::Warning, tr("QMessageBox::warning()"), - MESSAGE, nullptr, this); + MESSAGE, { }, this); msgBox.setDetailedText(MESSAGE_DETAILS); msgBox.addButton(tr("Save &Again"), QMessageBox::AcceptRole); msgBox.addButton(tr("&Continue"), QMessageBox::RejectRole); diff --git a/examples/widgets/dialogs/tabdialog/CMakeLists.txt b/examples/widgets/dialogs/tabdialog/CMakeLists.txt index 980f3cb222..0df1238e56 100644 --- a/examples/widgets/dialogs/tabdialog/CMakeLists.txt +++ b/examples/widgets/dialogs/tabdialog/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/dialogs/tabdialog") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(tabdialog @@ -18,6 +20,8 @@ add_qt_gui_executable(tabdialog tabdialog.cpp tabdialog.h ) target_link_libraries(tabdialog PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/dialogs/trivialwizard/CMakeLists.txt b/examples/widgets/dialogs/trivialwizard/CMakeLists.txt index 1c194017a4..759483ab8f 100644 --- a/examples/widgets/dialogs/trivialwizard/CMakeLists.txt +++ b/examples/widgets/dialogs/trivialwizard/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/dialogs/trivialwizard") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(trivialwizard trivialwizard.cpp ) target_link_libraries(trivialwizard PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/doc/src/addressbook-tutorial.qdoc b/examples/widgets/doc/src/addressbook-tutorial.qdoc index 1f6966e8ae..563b6a2be9 100644 --- a/examples/widgets/doc/src/addressbook-tutorial.qdoc +++ b/examples/widgets/doc/src/addressbook-tutorial.qdoc @@ -136,7 +136,7 @@ \section1 Defining the AddressBook Class - The \l{tutorials/addressbook/part1/addressbook.h}{\c addressbook.h} file is + The \c{tutorials/addressbook/part1/addressbook.h} file is used to define the \c AddressBook class. We start by defining \c AddressBook as a QWidget subclass and declaring diff --git a/examples/widgets/doc/src/customsortfiltermodel.qdoc b/examples/widgets/doc/src/customsortfiltermodel.qdoc index 9f0d13dd83..97725ead04 100644 --- a/examples/widgets/doc/src/customsortfiltermodel.qdoc +++ b/examples/widgets/doc/src/customsortfiltermodel.qdoc @@ -284,6 +284,6 @@ instance of the QStandardItemModel class, i.e., a generic model for storing custom data typically used as a repository for standard Qt data types. Each mail description is added to the - model using \c addMail(), another convenience function. See \l - {itemviews/customsortfiltermodel/main.cpp}{main.cpp} for details. + model using \c addMail(), another convenience function. See \c + {itemviews/customsortfiltermodel/main.cpp} for details. */ diff --git a/examples/widgets/doc/src/gallery.qdoc b/examples/widgets/doc/src/gallery.qdoc new file mode 100644 index 0000000000..455099ddce --- /dev/null +++ b/examples/widgets/doc/src/gallery.qdoc @@ -0,0 +1,36 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \example gallery + \title Widgets Gallery Example + \ingroup examples-widgets + \brief The Widgets Gallery example shows widgets relevant for designing UIs. + + This example demonstrates widgets typically used in dialogs and forms. + It also allows for changing the style. +*/ diff --git a/examples/widgets/doc/src/icons.qdoc b/examples/widgets/doc/src/icons.qdoc index 7aae0491d6..24be09a7a9 100644 --- a/examples/widgets/doc/src/icons.qdoc +++ b/examples/widgets/doc/src/icons.qdoc @@ -232,8 +232,8 @@ combinations of states and modes for a given icon. \li \c IconSizeSpinBox is a subclass of QSpinBox that lets the user enter icon sizes (e.g., "48 x 48"). - \li \c ImageDelegate is a subclass of QItemDelegate that provides - comboboxes for letting the user set the mode and state + \li \c ImageDelegate is a subclass of QStyledItemDelegate that + provides comboboxes for letting the user set the mode and state associated with an image. \endlist @@ -468,7 +468,6 @@ loaded into the application. \snippet widgets/icons/mainwindow.cpp 13 - \snippet widgets/icons/mainwindow.cpp 14 We retrieve the image name using the QFileInfo::baseName() function that returns the base name of the file without the path, @@ -486,8 +485,6 @@ Qt::ItemIsEditable flag. Table items are editable by default. \snippet widgets/icons/mainwindow.cpp 15 - \snippet widgets/icons/mainwindow.cpp 16 - \snippet widgets/icons/mainwindow.cpp 17 Then we create the second and third items in the row making the default mode Normal and the default state Off. But if the \uicontrol @@ -498,7 +495,6 @@ example's \c images subdirectory respect this naming convention. \snippet widgets/icons/mainwindow.cpp 18 - \snippet widgets/icons/mainwindow.cpp 19 In the end we add the items to the associated row, and use the QTableWidget::openPersistentEditor() function to create @@ -522,8 +518,6 @@ application. \snippet widgets/icons/mainwindow.cpp 8 - \snippet widgets/icons/mainwindow.cpp 9 - \snippet widgets/icons/mainwindow.cpp 10 We also extract the image file's name using the QTableWidgetItem::data() function. This function takes a @@ -571,24 +565,22 @@ delegate for the table widget. We create a \c ImageDelegate that we make the item delegate for our view. - The QItemDelegate class can be used to provide an editor for an item view + The QStyledItemDelegate class can be used to provide an editor for an item view class that is subclassed from QAbstractItemView. Using a delegate for this purpose allows the editing mechanism to be customized and developed independently from the model and view. - In this example we derive \c ImageDelegate from QItemDelegate. - QItemDelegate usually provides line editors, while our subclass + In this example we derive \c ImageDelegate from QStyledItemDelegate. + QStyledItemDelegate usually provides line editors, while our subclass \c ImageDelegate, provides comboboxes for the mode and state fields. \snippet widgets/icons/mainwindow.cpp 22 - \snippet widgets/icons/mainwindow.cpp 23 Then we customize the QTableWidget's horizontal header, and hide the vertical header. \snippet widgets/icons/mainwindow.cpp 24 - \snippet widgets/icons/mainwindow.cpp 25 At the end, we connect the QTableWidget::itemChanged() signal to the \c changeIcon() slot to ensure that the preview area is in @@ -750,23 +742,23 @@ \snippet widgets/icons/imagedelegate.h 0 - The \c ImageDelegate class is a subclass of QItemDelegate. The - QItemDelegate class provides display and editing facilities for - data items from a model. A single QItemDelegate object is + The \c ImageDelegate class is a subclass of QStyledItemDelegate. The + QStyledItemDelegate class provides display and editing facilities for + data items from a model. A single QStyledItemDelegate object is responsible for all items displayed in a item view (in our case, a QTableWidget). - A QItemDelegate can be used to provide an editor for an item view + A QStyledItemDelegate can be used to provide an editor for an item view class that is subclassed from QAbstractItemView. Using a delegate for this purpose allows the editing mechanism to be customized and developed independently from the model and view. \snippet widgets/icons/imagedelegate.h 1 - The default implementation of QItemDelegate creates a QLineEdit. + The default implementation of QStyledItemDelegate creates a QLineEdit. Since we want the editor to be a QComboBox, we need to subclass - QItemDelegate and reimplement the QItemDelegate::createEditor(), - QItemDelegate::setEditorData() and QItemDelegate::setModelData() + QStyledItemDelegate and reimplement the QStyledItemDelegate::createEditor(), + QStyledItemDelegate::setEditorData() and QStyledItemDelegate::setModelData() functions. \snippet widgets/icons/imagedelegate.h 2 @@ -783,7 +775,7 @@ \snippet widgets/icons/imagedelegate.cpp 1 - The default QItemDelegate::createEditor() implementation returns + The default QStyledItemDelegate::createEditor() implementation returns the widget used to edit the item specified by the model and item index for editing. The parent widget and style option are used to control the appearance of the editor widget. @@ -803,7 +795,7 @@ \snippet widgets/icons/imagedelegate.cpp 2 - The QItemDelegate::setEditorData() function is used by + The QStyledItemDelegate::setEditorData() function is used by QTableWidget to transfer data from a QTableWidgetItem to the editor. The data is stored as a string; we use QComboBox::findText() to locate it in the combobox. @@ -816,7 +808,7 @@ \snippet widgets/icons/imagedelegate.cpp 3 - The QItemDelegate::setEditorData() function is used by QTableWidget + The QStyledItemDelegate::setEditorData() function is used by QTableWidget to transfer data back from the editor to the \l{QTableWidgetItem}. \snippet widgets/icons/imagedelegate.cpp 4 diff --git a/examples/widgets/doc/src/padnavigator.qdoc b/examples/widgets/doc/src/padnavigator.qdoc index e59fa3cdbe..d8e83978cf 100644 --- a/examples/widgets/doc/src/padnavigator.qdoc +++ b/examples/widgets/doc/src/padnavigator.qdoc @@ -387,17 +387,12 @@ \snippet graphicsview/padnavigator/padnavigator.cpp 7 We now create the animations that control the flip-effect when you press - the enter key. The main goal is to rotate the pad by 180 degrees or back, - but we also need to make sure the selection item's tilt rotations are reset - back to 0 when the pad is flipped, and restored back to their original - values when flipped back: + the enter key. The main goal is to rotate the pad by 180 degrees or back. \list \li \c smoothFlipRotation: Animates the main 180 degree rotation of the pad. \li \c smoothFlipScale: Scales the pad out and then in again while the pad is rotating. - \li \c smoothFlipXRotation: Animates the selection item's X-tilt to 0 and back. - \li \c smoothFlipYRotation: Animates the selection item's Y-tilt to 0 and back. - \li \c flipAnimation: A parallel animation group that ensures all the above animations are run in parallel. + \li \c flipAnimation: A parallel animation group that ensures the above animations are run in parallel. \endlist All animations are given a 500 millisecond duration and an @@ -447,11 +442,17 @@ Each state assigns specific properties to objects on entry. Most interesting perhaps is the assignment of the value 0.0 to the pad's \c flipRotation angle property when in \c frontState, and 180.0 when in \c - backState. At the end of this section we register default animations with - the state engine; these animations will apply to their respective objects - and properties for any state transition. Otherwise it's common to assign + backState. + + At the end of this section we register default animations with the state + engine; these animations will apply to their respective objects and + properties for any state transition. Otherwise it's common to assign animations to specific transitions. + Specifically, we use default animations to control the selection item's + movement and tilt rotations. The tilt rotations are set to 0 when the pad + is flipped, and restored back to their original values when flipped back. + The \c splashState state is set as the initial state. This is required before we start the state engine. We proceed with creating some transitions. diff --git a/examples/widgets/doc/src/shapedclock.qdoc b/examples/widgets/doc/src/shapedclock.qdoc index 2e5d8b1496..732820cdc8 100644 --- a/examples/widgets/doc/src/shapedclock.qdoc +++ b/examples/widgets/doc/src/shapedclock.qdoc @@ -29,16 +29,18 @@ \example widgets/shapedclock \title Shaped Clock Example \ingroup examples-widgets - \brief The Shaped Clock example shows how to apply a widget mask to a top-level - widget to produce a shaped window. + \brief The Shaped Clock example shows how to apply a translucent background + and a widget mask to a top-level widget to produce a shaped window. \borderedimage shapedclock-example.png - Widget masks are used to customize the shapes of top-level widgets by restricting - the available area for painting. On some window systems, setting certain window flags - will cause the window decoration (title bar, window frame, buttons) to be disabled, - allowing specially-shaped windows to be created. In this example, we use this feature - to create a circular window containing an analog clock. + Widget masks are used to customize the shapes of top-level widgets by + restricting the area available for painting and mouse input. Using a + translucent background facilitates partially transparent windows and smooth + edges. On most window systems, setting certain window flags will cause the + window decoration (title bar, window frame, buttons) to be disabled, + allowing specially-shaped windows to be created. In this example, we use + this feature to create a circular window containing an analog clock. Since this example's window does not provide a \uicontrol File menu or a close button, we provide a context menu with an \uicontrol Exit entry so that the example @@ -52,8 +54,10 @@ \snippet widgets/shapedclock/shapedclock.h 0 - The \l{QWidget::paintEvent()}{paintEvent()} implementation is the same as that found - in the \c AnalogClock class. We implement \l{QWidget::sizeHint()}{sizeHint()} + The \l{QWidget::paintEvent()}{paintEvent()} implementation is the same as + that found in the \c AnalogClock class, with one important exception: we + now must also draw background (the clock face) ourselves, since the widget + background is just transparent. We implement \l{QWidget::sizeHint()}{sizeHint()} so that we don't have to resize the widget explicitly. We also provide an event handler for resize events. This allows us to update the mask if the clock is resized. @@ -70,9 +74,11 @@ \snippet widgets/shapedclock/shapedclock.cpp 0 - We inform the window manager that the widget is not to be decorated with a window - frame by setting the Qt::FramelessWindowHint flag on the widget. As a result, we need - to provide a way for the user to move the clock around the screen. + We request a transparent window by setting the Qt::WA_TranslucentBackground + widget attribute. We inform the window manager that the widget is not to be + decorated with a window frame by setting the Qt::FramelessWindowHint flag + on the widget. As a result, we need to provide a way for the user to move + the clock around the screen. Mouse button events are delivered to the \c mousePressEvent() handler: @@ -94,14 +100,20 @@ widget is moved to the point given by subtracting the \c dragPosition from the current cursor position in global coordinates. If we drag the widget, we also accept the event. - The \c paintEvent() function is given for completeness. See the - \l{Analog Clock Example}{Analog Clock} example for a description of the process used - to render the clock. + The \c paintEvent() function is mainly the same as described in the + \l{Analog Clock Example}{Analog Clock} example. The one addition is that we + use QPainter::drawEllipse() to draw a round clock face with the current + palette's default background color. We make the clock face a bit smaller + than the widget mask, so that the anti-aliased, semi-transparent pixels on + the edge are not clipped away by the widget mask. This gives the shaped + window smooth edges on the screen. \snippet widgets/shapedclock/shapedclock.cpp 3 - In the \c resizeEvent() handler, we re-use some of the code from the \c paintEvent() - to determine the region of the widget that is visible to the user: + In the \c resizeEvent() handler, we re-use some of the code from the \c + paintEvent() to determine the region of the widget that is visible to the + user. This tells the system the area where mouse clicks should go to us, + and not to whatever window is behind us: \snippet widgets/shapedclock/shapedclock.cpp 4 @@ -121,6 +133,12 @@ \section1 Notes on Widget Masks + Widget masks are used to hint to the window system that the application + does not want mouse events for areas outside the mask. On most systems, + they also result in coarse visual clipping. To get smooth window edges, one + should use translucent background and anti-aliased painting, as shown in + this example. + Since QRegion allows arbitrarily complex regions to be created, widget masks can be made to suit the most unconventionally-shaped windows, and even allow widgets to be displayed with holes in them. diff --git a/examples/widgets/doc/src/styles.qdoc b/examples/widgets/doc/src/styles.qdoc index 4fea8f3bfc..014541a330 100644 --- a/examples/widgets/doc/src/styles.qdoc +++ b/examples/widgets/doc/src/styles.qdoc @@ -84,8 +84,8 @@ \snippet widgets/styles/norwegianwoodstyle.cpp 0 - The \c polish() function is reimplemented from QStyle. It takes a - QPalette as a reference and adapts the palette to fit the style. + The \c standardPalette() function is reimplemented from QStyle. + It returns a QPalette with the style's preferred colors and textures. Most styles don't need to reimplement that function. The Norwegian Wood style reimplements it to set a "wooden" palette. @@ -380,7 +380,7 @@ a certain \l{QPalette::ColorRole}{color role}, for all three \l{QPalette::ColorGroup}{color groups} (active, disabled, inactive). We used it to initialize the Norwegian Wood palette in - \c polish(QPalette &). + \c standardPalette. \snippet widgets/styles/norwegianwoodstyle.cpp 39 \snippet widgets/styles/norwegianwoodstyle.cpp 40 @@ -443,10 +443,6 @@ current style's \l{QStyle::standardPalette()}{standard palette} is used; otherwise, the system's default palette is honored. - For the Norwegian Wood style, this makes no difference because we - always override the palette with our own palette in \c - NorwegianWoodStyle::polish(). - \snippet widgets/styles/widgetgallery.cpp 9 \snippet widgets/styles/widgetgallery.cpp 10 diff --git a/examples/widgets/doc/src/transformations.qdoc b/examples/widgets/doc/src/transformations.qdoc index d67e315848..17b540b6cc 100644 --- a/examples/widgets/doc/src/transformations.qdoc +++ b/examples/widgets/doc/src/transformations.qdoc @@ -320,8 +320,8 @@ The \c setupShapes() function is called from the constructor and create the QPainterPath objects representing the shapes that are - used in the application. For construction details, see the \l - {painting/transformations/window.cpp}{window.cpp} example + used in the application. For construction details, see the \c + {painting/transformations/window.cpp} example file. The shapes are stored in a QList. The QList::append() function inserts the given shape at the end of the list. diff --git a/examples/widgets/draganddrop/draggableicons/CMakeLists.txt b/examples/widgets/draganddrop/draggableicons/CMakeLists.txt index 5126b41d27..5695657792 100644 --- a/examples/widgets/draganddrop/draggableicons/CMakeLists.txt +++ b/examples/widgets/draganddrop/draggableicons/CMakeLists.txt @@ -9,19 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/draganddrop/draggableicons") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(draggableicons - draggableicons.qrc dragwidget.cpp dragwidget.h main.cpp ) target_link_libraries(draggableicons PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(draggableicons_resource_files + "images/boat.png" + "images/car.png" + "images/house.png" +) + +qt6_add_resources(draggableicons "draggableicons" + PREFIX + "/" + FILES + ${draggableicons_resource_files} +) + install(TARGETS draggableicons RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/draganddrop/draggabletext/CMakeLists.txt b/examples/widgets/draganddrop/draggabletext/CMakeLists.txt index c542a7b585..d3dfc125b2 100644 --- a/examples/widgets/draganddrop/draggabletext/CMakeLists.txt +++ b/examples/widgets/draganddrop/draggabletext/CMakeLists.txt @@ -9,19 +9,35 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/draganddrop/draggabletext") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(draggabletext - draggabletext.qrc dragwidget.cpp dragwidget.h main.cpp ) target_link_libraries(draggabletext PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(draggabletext_resource_files + "words.txt" +) + +qt6_add_resources(draggabletext "draggabletext" + PREFIX + "/dictionary" + FILES + ${draggabletext_resource_files} +) + install(TARGETS draggabletext RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/draganddrop/dropsite/CMakeLists.txt b/examples/widgets/draganddrop/dropsite/CMakeLists.txt index 591edfac3d..7d6ce02b4b 100644 --- a/examples/widgets/draganddrop/dropsite/CMakeLists.txt +++ b/examples/widgets/draganddrop/dropsite/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/draganddrop/dropsite") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(dropsite @@ -19,6 +21,8 @@ add_qt_gui_executable(dropsite main.cpp ) target_link_libraries(dropsite PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/draganddrop/fridgemagnets/CMakeLists.txt b/examples/widgets/draganddrop/fridgemagnets/CMakeLists.txt index 84c097f326..31441ab7cb 100644 --- a/examples/widgets/draganddrop/fridgemagnets/CMakeLists.txt +++ b/examples/widgets/draganddrop/fridgemagnets/CMakeLists.txt @@ -9,20 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/draganddrop/fridgemagnets") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(fridgemagnets draglabel.cpp draglabel.h dragwidget.cpp dragwidget.h - fridgemagnets.qrc main.cpp ) target_link_libraries(fridgemagnets PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(fridgemagnets_resource_files + "words.txt" +) + +qt6_add_resources(fridgemagnets "fridgemagnets" + PREFIX + "/dictionary" + FILES + ${fridgemagnets_resource_files} +) + install(TARGETS fridgemagnets RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/draganddrop/puzzle/.prev_CMakeLists.txt b/examples/widgets/draganddrop/puzzle/.prev_CMakeLists.txt new file mode 100644 index 0000000000..148f386115 --- /dev/null +++ b/examples/widgets/draganddrop/puzzle/.prev_CMakeLists.txt @@ -0,0 +1,47 @@ +# Generated from puzzle.pro. + +cmake_minimum_required(VERSION 3.14) +project(puzzle LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/draganddrop/puzzle") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(puzzle + main.cpp + mainwindow.cpp mainwindow.h + pieceslist.cpp pieceslist.h + puzzlewidget.cpp puzzlewidget.h +) +target_link_libraries(puzzle PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set(puzzle_resource_files + "example.jpg" +) + +qt6_add_resources(puzzle "puzzle" + PREFIX + "/images" + FILES + ${puzzle_resource_files} +) + +install(TARGETS puzzle + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/draganddrop/puzzle/CMakeLists.txt b/examples/widgets/draganddrop/puzzle/CMakeLists.txt index 99db9b4e0d..b181efd090 100644 --- a/examples/widgets/draganddrop/puzzle/CMakeLists.txt +++ b/examples/widgets/draganddrop/puzzle/CMakeLists.txt @@ -9,21 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/draganddrop/draganddrop_puzzle") # special case +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(draganddrop_puzzle # special case: renamed puzzle main.cpp mainwindow.cpp mainwindow.h pieceslist.cpp pieceslist.h - puzzle.qrc puzzlewidget.cpp puzzlewidget.h ) -target_link_libraries(draganddrop_puzzle PUBLIC # special case: renamed puzzle +target_link_libraries(draganddrop_puzzle PUBLIC # special case + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(puzzle_resource_files + "example.jpg" +) + +qt6_add_resources(draganddrop_puzzle "puzzle" # special case + PREFIX + "/images" + FILES + ${puzzle_resource_files} +) + install(TARGETS draganddrop_puzzle # special case: renamed puzzle RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/effects/blurpicker/CMakeLists.txt b/examples/widgets/effects/blurpicker/CMakeLists.txt index 030de7fe93..3f9fa69797 100644 --- a/examples/widgets/effects/blurpicker/CMakeLists.txt +++ b/examples/widgets/effects/blurpicker/CMakeLists.txt @@ -9,19 +9,44 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/effects/blurpicker") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(blurpicker blureffect.cpp blureffect.h - blurpicker.cpp blurpicker.h blurpicker.qrc + blurpicker.cpp blurpicker.h main.cpp ) target_link_libraries(blurpicker PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(blurpicker_resource_files + "images/accessories-calculator.png" + "images/accessories-text-editor.png" + "images/background.jpg" + "images/help-browser.png" + "images/internet-group-chat.png" + "images/internet-mail.png" + "images/internet-web-browser.png" + "images/office-calendar.png" + "images/system-users.png" +) + +qt6_add_resources(blurpicker "blurpicker" + PREFIX + "/" + FILES + ${blurpicker_resource_files} +) + install(TARGETS blurpicker RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/effects/fademessage/CMakeLists.txt b/examples/widgets/effects/fademessage/CMakeLists.txt index d38ebd2d62..b84985a886 100644 --- a/examples/widgets/effects/fademessage/CMakeLists.txt +++ b/examples/widgets/effects/fademessage/CMakeLists.txt @@ -9,18 +9,35 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/effects/fademessage") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(fademessage - fademessage.cpp fademessage.h fademessage.qrc + fademessage.cpp fademessage.h main.cpp ) target_link_libraries(fademessage PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(fademessage_resource_files + "background.jpg" +) + +qt6_add_resources(fademessage "fademessage" + PREFIX + "/" + FILES + ${fademessage_resource_files} +) + install(TARGETS fademessage RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/gallery/gallery.pro b/examples/widgets/gallery/gallery.pro new file mode 100644 index 0000000000..38bf8d6d8e --- /dev/null +++ b/examples/widgets/gallery/gallery.pro @@ -0,0 +1,10 @@ +QT += widgets +requires(qtConfig(combobox)) + +HEADERS = widgetgallery.h +SOURCES = main.cpp \ + widgetgallery.cpp + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/widgets/gallery +INSTALLS += target diff --git a/examples/widgets/graphicsview/boxes/roundedbox.h b/examples/widgets/gallery/main.cpp index a1f15cd631..7f1782c84e 100644 --- a/examples/widgets/graphicsview/boxes/roundedbox.h +++ b/examples/widgets/gallery/main.cpp @@ -1,9 +1,9 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** -** This file is part of the demonstration applications of the Qt Toolkit. +** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** Commercial License Usage @@ -48,30 +48,28 @@ ** ****************************************************************************/ -#ifndef ROUNDEDBOX_H -#define ROUNDEDBOX_H +#include <QApplication> -#include "glbuffers.h" -#include "glextensions.h" -#include "gltrianglemesh.h" +#include "widgetgallery.h" -#include <QVector2D> -#include <QVector3D> - -struct P3T2N3Vertex +int main(int argc, char *argv[]) { - QVector3D position; - QVector2D texCoord; - QVector3D normal; - static VertexDescription description[]; -}; + bool useHighDpiScaling = true; -class GLRoundedBox : public GLTriangleMesh<P3T2N3Vertex, unsigned short> -{ -public: - // 0 < r < 0.5, 0 <= n <= 125 - explicit GLRoundedBox(float r = 0.25f, float scale = 1.0f, int n = 10); -}; + for (int i = 1; i < argc; ++i) { + if (qstrcmp(argv[i], "--no-scaling") == 0) + useHighDpiScaling = false; + } + if (useHighDpiScaling) { + QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + } else { + QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); + } -#endif + QApplication app(argc, argv); + WidgetGallery gallery; + gallery.show(); + return QCoreApplication::exec(); +} diff --git a/examples/widgets/gallery/widgetgallery.cpp b/examples/widgets/gallery/widgetgallery.cpp new file mode 100644 index 0000000000..3bbe8943d1 --- /dev/null +++ b/examples/widgets/gallery/widgetgallery.cpp @@ -0,0 +1,474 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "widgetgallery.h" + +#include <QApplication> +#include <QCheckBox> +#include <QComboBox> +#include <QCommandLinkButton> +#include <QDateTimeEdit> +#include <QDial> +#include <QDialogButtonBox> +#include <QFileSystemModel> +#include <QGridLayout> +#include <QGroupBox> +#include <QMenu> +#include <QLabel> +#include <QLineEdit> +#include <QListWidget> +#include <QPlainTextEdit> +#include <QProgressBar> +#include <QPushButton> +#include <QRadioButton> +#include <QScrollBar> +#include <QShortcut> +#include <QSpinBox> +#include <QStandardItemModel> +#include <QStyle> +#include <QStyleFactory> +#include <QTextBrowser> +#include <QTreeView> +#include <QTableWidget> +#include <QTextEdit> +#include <QToolBox> +#include <QToolButton> + +#include <QIcon> +#include <QDesktopServices> +#include <QScreen> +#include <QWindow> + +#include <QDebug> +#include <QLibraryInfo> +#include <QSysInfo> +#include <QTextStream> +#include <QTimer> + +static inline QString className(const QObject *o) +{ + return QString::fromUtf8(o->metaObject()->className()); +} + +static inline void setClassNameToolTip(QWidget *w) +{ + w->setToolTip(className(w)); +} + +static QString helpUrl(const QString &page) +{ + QString result; + QTextStream(&result) << "https://doc.qt.io/qt-" << QT_VERSION_MAJOR + << '/' << page << ".html"; + return result; +} + +static inline QString helpUrl(const QWidget *w) +{ + return helpUrl(className(w).toLower()); +} + +static void launchHelp(const QWidget *w) +{ + QDesktopServices::openUrl(helpUrl(w)); +} + +static void launchModuleHelp() +{ + QDesktopServices::openUrl(helpUrl(QLatin1String("qtwidgets-index"))); +} + +template <class Widget> +Widget *createWidget(const char *name, QWidget *parent = nullptr) +{ + auto result = new Widget(parent); + result->setObjectName(QLatin1String(name)); + setClassNameToolTip(result); + return result; +} + +template <class Widget, class Parameter> +Widget *createWidget1(const Parameter &p1, const char *name, QWidget *parent = nullptr) +{ + auto result = new Widget(p1, parent); + result->setObjectName(QLatin1String(name)); + setClassNameToolTip(result); + return result; +} + +QTextStream &operator<<(QTextStream &str, const QRect &r) +{ + str << r.width() << 'x' << r.height() << Qt::forcesign << r.x() << r.y() + << Qt::noforcesign; + return str; +} + +static QString highDpiScaleFactorRoundingPolicy() +{ + QString result; + QDebug(&result) << QGuiApplication::highDpiScaleFactorRoundingPolicy(); + if (result.endsWith(QLatin1Char(')'))) + result.chop(1); + const int lastSep = result.lastIndexOf(QLatin1String("::")); + if (lastSep != -1) + result.remove(0, lastSep + 2); + return result; +} + +WidgetGallery::WidgetGallery(QWidget *parent) + : QDialog(parent) + , progressBar(createProgressBar()) +{ + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + + auto styleComboBox = createWidget<QComboBox>("styleComboBox"); + const QString defaultStyleName = QApplication::style()->objectName(); + QStringList styleNames = QStyleFactory::keys(); + for (int i = 1, size = styleNames.size(); i < size; ++i) { + if (defaultStyleName.compare(styleNames.at(i), Qt::CaseInsensitive) == 0) { + styleNames.swapItemsAt(0, i); + break; + } + } + styleComboBox->addItems(styleNames); + + auto styleLabel = createWidget1<QLabel>(tr("&Style:"), "styleLabel"); + styleLabel->setBuddy(styleComboBox); + + auto helpLabel = createWidget1<QLabel>(tr("Press F1 over a widget to see Documentation"), "helpLabel"); + + auto disableWidgetsCheckBox = createWidget1<QCheckBox>(tr("&Disable widgets"), "disableWidgetsCheckBox"); + + auto buttonsGroupBox = createButtonsGroupBox(); + auto itemViewTabWidget = createItemViewTabWidget(); + auto simpleInputWidgetsGroupBox = createSimpleInputWidgetsGroupBox(); + auto textToolBox = createTextToolBox(); + + connect(styleComboBox, &QComboBox::textActivated, + this, &WidgetGallery::changeStyle); + connect(disableWidgetsCheckBox, &QCheckBox::toggled, + buttonsGroupBox, &QWidget::setDisabled); + connect(disableWidgetsCheckBox, &QCheckBox::toggled, + textToolBox, &QWidget::setDisabled); + connect(disableWidgetsCheckBox, &QCheckBox::toggled, + itemViewTabWidget, &QWidget::setDisabled); + connect(disableWidgetsCheckBox, &QCheckBox::toggled, + simpleInputWidgetsGroupBox, &QWidget::setDisabled); + + auto topLayout = new QHBoxLayout; + topLayout->addWidget(styleLabel); + topLayout->addWidget(styleComboBox); + topLayout->addStretch(1); + topLayout->addWidget(helpLabel); + topLayout->addStretch(1); + topLayout->addWidget(disableWidgetsCheckBox); + + auto dialogButtonBox = createWidget1<QDialogButtonBox>(QDialogButtonBox::Help | QDialogButtonBox::Close, + "dialogButtonBox"); + connect(dialogButtonBox, &QDialogButtonBox::helpRequested, this, launchModuleHelp); + connect(dialogButtonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + + auto mainLayout = new QGridLayout(this); + mainLayout->addLayout(topLayout, 0, 0, 1, 2); + mainLayout->addWidget(buttonsGroupBox, 1, 0); + mainLayout->addWidget(simpleInputWidgetsGroupBox, 1, 1); + mainLayout->addWidget(itemViewTabWidget, 2, 0); + mainLayout->addWidget(textToolBox, 2, 1); + mainLayout->addWidget(progressBar, 3, 0, 1, 2); + mainLayout->addWidget(dialogButtonBox, 4, 0, 1, 2); + + setWindowTitle(tr("Widget Gallery Qt %1").arg(QT_VERSION_STR)); + + new QShortcut(QKeySequence::HelpContents, this, this, &WidgetGallery::helpOnCurrentWidget); +} + +void WidgetGallery::setVisible(bool visible) +{ + QDialog::setVisible(visible); + if (visible) { + connect(windowHandle(), &QWindow::screenChanged, this, &WidgetGallery::updateSystemInfo); + updateSystemInfo(); + } +} + +void WidgetGallery::changeStyle(const QString &styleName) +{ + QApplication::setStyle(QStyleFactory::create(styleName)); +} + +void WidgetGallery::advanceProgressBar() +{ + int curVal = progressBar->value(); + int maxVal = progressBar->maximum(); + progressBar->setValue(curVal + (maxVal - curVal) / 100); +} + +QGroupBox *WidgetGallery::createButtonsGroupBox() +{ + auto result = createWidget1<QGroupBox>(tr("Buttons"), "buttonsGroupBox"); + + auto defaultPushButton = createWidget1<QPushButton>(tr("Default Push Button"), "defaultPushButton"); + defaultPushButton->setDefault(true); + + auto togglePushButton = createWidget1<QPushButton>(tr("Toggle Push Button"), "togglePushButton"); + togglePushButton->setCheckable(true); + togglePushButton->setChecked(true); + + auto flatPushButton = createWidget1<QPushButton>(tr("Flat Push Button"), "flatPushButton"); + flatPushButton->setFlat(true); + + auto toolButton = createWidget<QToolButton>("toolButton"); + toolButton->setText(tr("Tool Button")); + + auto menuToolButton = createWidget<QToolButton>("menuButton"); + menuToolButton->setText(tr("Menu Button")); + auto toolMenu = new QMenu(menuToolButton); + menuToolButton->setPopupMode(QToolButton::InstantPopup); + toolMenu->addAction("Option"); + toolMenu->addSeparator(); + auto action = toolMenu->addAction("Checkable Option"); + action->setCheckable(true); + menuToolButton->setMenu(toolMenu); + auto toolLayout = new QHBoxLayout; + toolLayout->addWidget(toolButton); + toolLayout->addWidget(menuToolButton); + + auto commandLinkButton = createWidget1<QCommandLinkButton>(tr("Command Link Button"), "commandLinkButton"); + commandLinkButton->setDescription(tr("Description")); + + auto buttonLayout = new QVBoxLayout; + buttonLayout->addWidget(defaultPushButton); + buttonLayout->addWidget(togglePushButton); + buttonLayout->addWidget(flatPushButton); + buttonLayout->addLayout(toolLayout); + buttonLayout->addWidget(commandLinkButton); + buttonLayout->addStretch(1); + + auto radioButton1 = createWidget1<QRadioButton>(tr("Radio button 1"), "radioButton1"); + auto radioButton2 = createWidget1<QRadioButton>(tr("Radio button 2"), "radioButton2"); + auto radioButton3 = createWidget1<QRadioButton>(tr("Radio button 3"), "radioButton3"); + radioButton1->setChecked(true); + + auto checkBox = createWidget1<QCheckBox>(tr("Tri-state check box"), "checkBox"); + checkBox->setTristate(true); + checkBox->setCheckState(Qt::PartiallyChecked); + + auto checkableLayout = new QVBoxLayout; + checkableLayout->addWidget(radioButton1); + checkableLayout->addWidget(radioButton2); + checkableLayout->addWidget(radioButton3); + checkableLayout->addWidget(checkBox); + checkableLayout->addStretch(1); + + auto mainLayout = new QHBoxLayout(result); + mainLayout->addLayout(buttonLayout); + mainLayout->addLayout(checkableLayout); + mainLayout->addStretch(); + return result; +} + +static QWidget *embedIntoHBoxLayout(QWidget *w, int margin = 5) +{ + auto result = new QWidget; + auto layout = new QHBoxLayout(result); + layout->setContentsMargins(margin, margin, margin, margin); + layout->addWidget(w); + return result; +} + +QToolBox *WidgetGallery::createTextToolBox() +{ + auto result = createWidget<QToolBox>("toolBox"); + + const QString plainText = tr("Twinkle, twinkle, little star,\n" + "How I wonder what you are.\n" + "Up above the world so high,\n" + "Like a diamond in the sky.\n" + "Twinkle, twinkle, little star,\n" + "How I wonder what you are!\n"); + // Create centered/italic HTML rich text + QString richText = QLatin1String("<html><head/><body><i>"); + for (const auto &line : plainText.splitRef(QLatin1Char('\n'))) + richText += QLatin1String("<center>") + line + QLatin1String("</center>"); + richText += QLatin1String("</i></body></html>"); + + auto textEdit = createWidget1<QTextEdit>(richText, "textEdit"); + auto plainTextEdit = createWidget1<QPlainTextEdit>(plainText, "plainTextEdit"); + + systemInfoTextBrowser = createWidget<QTextBrowser>("systemInfoTextBrowser"); + + result->addItem(embedIntoHBoxLayout(textEdit), tr("Text Edit")); + result->addItem(embedIntoHBoxLayout(plainTextEdit), tr("Plain Text Edit")); + result->addItem(embedIntoHBoxLayout(systemInfoTextBrowser), tr("Text Browser")); + return result; +} + +QTabWidget *WidgetGallery::createItemViewTabWidget() +{ + auto result = createWidget<QTabWidget>("bottomLeftTabWidget"); + result->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Ignored); + + auto treeView = createWidget<QTreeView>("treeView"); + auto fileSystemModel = new QFileSystemModel(treeView); + fileSystemModel->setRootPath(QDir::rootPath()); + treeView->setModel(fileSystemModel); + + auto tableWidget = createWidget<QTableWidget>("tableWidget"); + tableWidget->setRowCount(10); + tableWidget->setColumnCount(10); + + auto listModel = new QStandardItemModel(0, 1, result); + listModel->appendRow(new QStandardItem(QIcon(QLatin1String(":/qt-project.org/styles/commonstyle/images/diropen-128.png")), + tr("Directory"))); + listModel->appendRow(new QStandardItem(QIcon(QLatin1String(":/qt-project.org/styles/commonstyle/images/computer-32.png")), + tr("Computer"))); + + auto listView = createWidget<QListView>("listView"); + listView->setModel(listModel); + + auto iconModeListView = createWidget<QListView>("iconModeListView"); + iconModeListView->setViewMode(QListView::IconMode); + iconModeListView->setModel(listModel); + + result->addTab(embedIntoHBoxLayout(treeView), tr("&Tree View")); + result->addTab(embedIntoHBoxLayout(tableWidget), tr("T&able")); + result->addTab(embedIntoHBoxLayout(listView), tr("&List")); + result->addTab(embedIntoHBoxLayout(iconModeListView), tr("&Icon Mode List")); + return result; +} + +QGroupBox *WidgetGallery::createSimpleInputWidgetsGroupBox() +{ + auto result = createWidget1<QGroupBox>(tr("Simple Input Widgets"), "bottomRightGroupBox"); + result->setCheckable(true); + result->setChecked(true); + + auto lineEdit = createWidget1<QLineEdit>("s3cRe7", "lineEdit"); + lineEdit->setClearButtonEnabled(true); + lineEdit->setEchoMode(QLineEdit::Password); + + auto spinBox = createWidget<QSpinBox>("spinBox", result); + spinBox->setValue(50); + + auto dateTimeEdit = createWidget<QDateTimeEdit>("dateTimeEdit", result); + dateTimeEdit->setDateTime(QDateTime::currentDateTime()); + + auto slider = createWidget<QSlider>("slider", result); + slider->setOrientation(Qt::Horizontal); + slider->setValue(40); + + auto scrollBar = createWidget<QScrollBar>("scrollBar", result); + scrollBar->setOrientation(Qt::Horizontal); + setClassNameToolTip(scrollBar); + scrollBar->setValue(60); + + auto dial = createWidget<QDial>("dial", result); + dial->setValue(30); + dial->setNotchesVisible(true); + + auto layout = new QGridLayout(result); + layout->addWidget(lineEdit, 0, 0, 1, 2); + layout->addWidget(spinBox, 1, 0, 1, 2); + layout->addWidget(dateTimeEdit, 2, 0, 1, 2); + layout->addWidget(slider, 3, 0); + layout->addWidget(scrollBar, 4, 0); + layout->addWidget(dial, 3, 1, 2, 1); + layout->setRowStretch(5, 1); + return result; +} + +QProgressBar *WidgetGallery::createProgressBar() +{ + auto result = createWidget<QProgressBar>("progressBar"); + result->setRange(0, 10000); + result->setValue(0); + + auto timer = new QTimer(this); + connect(timer, &QTimer::timeout, this, &WidgetGallery::advanceProgressBar); + timer->start(1000); + return result; +} + +void WidgetGallery::updateSystemInfo() +{ + QString systemInfo; + QTextStream str(&systemInfo); + str << "<html><head/><body><h3>Build</h3><p>" << QLibraryInfo::build() << "</p>" + << "<h3>Operating System</h3><p>" << QSysInfo::prettyProductName() << "</p>" + << "<h3>Screens</h3><p>High DPI scale factor rounding policy: " + << highDpiScaleFactorRoundingPolicy() << "</p><ol>"; + const auto screens = QGuiApplication::screens(); + for (auto screen : screens) { + const bool current = screen == this->screen(); + str << "<li>"; + if (current) + str << "<i>"; + str << '"' << screen->name() << "\" " << screen->geometry() << ", " + << screen->logicalDotsPerInchX() << "DPI, DPR=" + << screen->devicePixelRatio(); + if (current) + str << "</i>"; + str << "</li>"; + } + str << "</ol></body></html>"; + systemInfoTextBrowser->setHtml(systemInfo); +} + +void WidgetGallery::helpOnCurrentWidget() +{ + // Skip over internal widgets + for (auto w = QApplication::widgetAt(QCursor::pos(screen())); w; w = w->parentWidget()) { + const QString name = w->objectName(); + if (!name.isEmpty() && !name.startsWith(QLatin1String("qt_"))) { + launchHelp(w); + break; + } + } +} diff --git a/examples/widgets/graphicsview/boxes/basic.vsh b/examples/widgets/gallery/widgetgallery.h index 454e0bd903..419c925190 100644 --- a/examples/widgets/graphicsview/boxes/basic.vsh +++ b/examples/widgets/gallery/widgetgallery.h @@ -1,9 +1,9 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** -** This file is part of the demonstration applications of the Qt Toolkit. +** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** Commercial License Usage @@ -48,23 +48,43 @@ ** ****************************************************************************/ -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; +#ifndef WIDGETGALLERY_H +#define WIDGETGALLERY_H -uniform mat4 view; +#include <QDialog> -void main() -{ - gl_TexCoord[0] = gl_MultiTexCoord0; - gl_TexCoord[1] = gl_Vertex; - specular = gl_LightSource[0].specular; - ambient = gl_LightSource[0].ambient; - diffuse = gl_LightSource[0].diffuse; - lightDirection = view * gl_LightSource[0].position; +QT_BEGIN_NAMESPACE +class QGroupBox; +class QProgressBar; +class QTabWidget; +class QTextBrowser; +class QToolBox; +QT_END_NAMESPACE - normal = gl_NormalMatrix * gl_Normal; - position = (gl_ModelViewMatrix * gl_Vertex).xyz; +class WidgetGallery : public QDialog +{ + Q_OBJECT - gl_FrontColor = gl_Color; - gl_Position = ftransform(); -} +public: + explicit WidgetGallery(QWidget *parent = nullptr); + + void setVisible(bool visible) override; + +private slots: + void changeStyle(const QString &styleName); + void advanceProgressBar(); + void helpOnCurrentWidget(); + void updateSystemInfo(); + +private: + static QGroupBox *createButtonsGroupBox(); + static QTabWidget *createItemViewTabWidget(); + static QGroupBox *createSimpleInputWidgetsGroupBox(); + QToolBox *createTextToolBox(); + QProgressBar *createProgressBar(); + + QProgressBar *progressBar; + QTextBrowser *systemInfoTextBrowser; +}; + +#endif // WIDGETGALLERY_H diff --git a/examples/widgets/gestures/imagegestures/CMakeLists.txt b/examples/widgets/gestures/imagegestures/CMakeLists.txt index 62e4854d33..9676089ff9 100644 --- a/examples/widgets/gestures/imagegestures/CMakeLists.txt +++ b/examples/widgets/gestures/imagegestures/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/gestures/imagegestures") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(imagegestures @@ -19,6 +21,8 @@ add_qt_gui_executable(imagegestures mainwidget.cpp mainwidget.h ) target_link_libraries(imagegestures PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/graphicsview/CMakeLists.txt b/examples/widgets/graphicsview/CMakeLists.txt index 19f60011e5..d7ef0fd0dc 100644 --- a/examples/widgets/graphicsview/CMakeLists.txt +++ b/examples/widgets/graphicsview/CMakeLists.txt @@ -14,7 +14,3 @@ add_subdirectory(flowlayout) add_subdirectory(anchorlayout) add_subdirectory(simpleanchorlayout) add_subdirectory(weatheranchorlayout) - -if(TARGET Qt::OpenGL AND NOT QT_FEATURE_opengles2 AND NOT QT_FEATURE_dynamicgl) - add_subdirectory(boxes) -endif() diff --git a/examples/widgets/graphicsview/anchorlayout/CMakeLists.txt b/examples/widgets/graphicsview/anchorlayout/CMakeLists.txt index 021628a7ff..c04890d613 100644 --- a/examples/widgets/graphicsview/anchorlayout/CMakeLists.txt +++ b/examples/widgets/graphicsview/anchorlayout/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/anchorlayout") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(anchorlayout main.cpp ) target_link_libraries(anchorlayout PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/graphicsview/basicgraphicslayouts/CMakeLists.txt b/examples/widgets/graphicsview/basicgraphicslayouts/CMakeLists.txt index 527e33b826..18c35e6a3e 100644 --- a/examples/widgets/graphicsview/basicgraphicslayouts/CMakeLists.txt +++ b/examples/widgets/graphicsview/basicgraphicslayouts/CMakeLists.txt @@ -9,20 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/basicgraphicslayouts") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(basicgraphicslayouts - basicgraphicslayouts.qrc layoutitem.cpp layoutitem.h main.cpp window.cpp window.h ) target_link_libraries(basicgraphicslayouts PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(basicgraphicslayouts_resource_files + "images/block.png" +) + +qt6_add_resources(basicgraphicslayouts "basicgraphicslayouts" + PREFIX + "/" + FILES + ${basicgraphicslayouts_resource_files} +) + install(TARGETS basicgraphicslayouts RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/graphicsview/boxes/3rdparty/fbm.c b/examples/widgets/graphicsview/boxes/3rdparty/fbm.c deleted file mode 100644 index 3eebaabfba..0000000000 --- a/examples/widgets/graphicsview/boxes/3rdparty/fbm.c +++ /dev/null @@ -1,207 +0,0 @@ -/***************************************************************** - - Implementation of the fractional Brownian motion algorithm. These - functions were originally the work of F. Kenton Musgrave. - For documentation of the different functions please refer to the - book: - "Texturing and modeling: a procedural approach" - by David S. Ebert et. al. - -******************************************************************/ - -#if defined (_MSC_VER) -#include <qglobal.h> -#endif - -#include <time.h> -#include <stdlib.h> -#include "fbm.h" - -#if defined(Q_CC_MSVC) -#pragma warning(disable:4244) -#endif - -/* Definitions used by the noise2() functions */ - -//#define B 0x100 -//#define BM 0xff -#define B 0x20 -#define BM 0x1f - -#define N 0x1000 -#define NP 12 /* 2^N */ -#define NM 0xfff - -static int p[B + B + 2]; -static float g3[B + B + 2][3]; -static float g2[B + B + 2][2]; -static float g1[B + B + 2]; -static int start = 1; - -static void init(void); - -#define s_curve(t) ( t * t * (3. - 2. * t) ) - -#define lerp(t, a, b) ( a + t * (b - a) ) - -#define setup(i,b0,b1,r0,r1)\ - t = vec[i] + N;\ - b0 = ((int)t) & BM;\ - b1 = (b0+1) & BM;\ - r0 = t - (int)t;\ - r1 = r0 - 1.; -#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] ) - -/* Fractional Brownian Motion function */ - -double fBm( Vector point, double H, double lacunarity, double octaves, - int init ) -{ - - double value, frequency, remainder; - int i; - static double exponent_array[10]; - float vec[3]; - - /* precompute and store spectral weights */ - if ( init ) { - start = 1; - srand( time(0) ); - /* seize required memory for exponent_array */ - frequency = 1.0; - for (i=0; i<=octaves; i++) { - /* compute weight for each frequency */ - exponent_array[i] = pow( frequency, -H ); - frequency *= lacunarity; - } - } - - value = 0.0; /* initialize vars to proper values */ - frequency = 1.0; - vec[0]=point.x; - vec[1]=point.y; - vec[2]=point.z; - - - /* inner loop of spectral construction */ - for (i=0; i<octaves; i++) { - /* value += noise3( vec ) * exponent_array[i];*/ - value += noise3( vec ) * exponent_array[i]; - vec[0] *= lacunarity; - vec[1] *= lacunarity; - vec[2] *= lacunarity; - } /* for */ - - remainder = octaves - (int)octaves; - if ( remainder ) /* add in ``octaves'' remainder */ - /* ``i'' and spatial freq. are preset in loop above */ - value += remainder * noise3( vec ) * exponent_array[i]; - - return( value ); - -} /* fBm() */ - - -float noise3(float vec[3]) -{ - int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11; - float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v; - int i, j; - - if (start) { - start = 0; - init(); - } - - setup(0, bx0,bx1, rx0,rx1); - setup(1, by0,by1, ry0,ry1); - setup(2, bz0,bz1, rz0,rz1); - - i = p[ bx0 ]; - j = p[ bx1 ]; - - b00 = p[ i + by0 ]; - b10 = p[ j + by0 ]; - b01 = p[ i + by1 ]; - b11 = p[ j + by1 ]; - - t = s_curve(rx0); - sy = s_curve(ry0); - sz = s_curve(rz0); - - - q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0); - q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0); - a = lerp(t, u, v); - - q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0); - q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0); - b = lerp(t, u, v); - - c = lerp(sy, a, b); - - q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1); - q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1); - a = lerp(t, u, v); - - q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1); - q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1); - b = lerp(t, u, v); - - d = lerp(sy, a, b); - - return lerp(sz, c, d); -} - -static void normalize2(float v[2]) -{ - float s; - - s = sqrt(v[0] * v[0] + v[1] * v[1]); - v[0] = v[0] / s; - v[1] = v[1] / s; -} - -static void normalize3(float v[3]) -{ - float s; - - s = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - v[0] = v[0] / s; - v[1] = v[1] / s; - v[2] = v[2] / s; -} - -static void init(void) -{ - int i, j, k; - - for (i = 0 ; i < B ; i++) { - p[i] = i; - - g1[i] = (float)((rand() % (B + B)) - B) / B; - - for (j = 0 ; j < 2 ; j++) - g2[i][j] = (float)((rand() % (B + B)) - B) / B; - normalize2(g2[i]); - - for (j = 0 ; j < 3 ; j++) - g3[i][j] = (float)((rand() % (B + B)) - B) / B; - normalize3(g3[i]); - } - - while (--i) { - k = p[i]; - p[i] = p[j = rand() % B]; - p[j] = k; - } - - for (i = 0 ; i < B + 2 ; i++) { - p[B + i] = p[i]; - g1[B + i] = g1[i]; - for (j = 0 ; j < 2 ; j++) - g2[B + i][j] = g2[i][j]; - for (j = 0 ; j < 3 ; j++) - g3[B + i][j] = g3[i][j]; - } -} diff --git a/examples/widgets/graphicsview/boxes/3rdparty/fbm.h b/examples/widgets/graphicsview/boxes/3rdparty/fbm.h deleted file mode 100644 index b8a4a99ae4..0000000000 --- a/examples/widgets/graphicsview/boxes/3rdparty/fbm.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************** - - Prototypes for the fractional Brownian motion algorithm. These - functions were originally the work of F. Kenton Musgrave. For - documentation of the different functions please refer to the book: - "Texturing and modeling: a procedural approach" - by David S. Ebert et. al. - -******************************************************************/ - -#ifndef _fbm_h -#define _fbm_h - -#include <math.h> - -#ifdef __cplusplus -extern "C" { -#endif - -//#define TRUE 1 -//#define FALSE 0 - -typedef struct { - double x; - double y; - double z; -} Vector; - -float noise3(float vec[]); -double fBm( Vector point, double H, double lacunarity, double octaves, - int init ); -#endif - -#ifdef __cplusplus -} -#endif - - - - diff --git a/examples/widgets/graphicsview/boxes/CMakeLists.txt b/examples/widgets/graphicsview/boxes/CMakeLists.txt deleted file mode 100644 index 0be040f90e..0000000000 --- a/examples/widgets/graphicsview/boxes/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -# Generated from boxes.pro. - -cmake_minimum_required(VERSION 3.14) -project(boxes LANGUAGES CXX) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_AUTOUIC ON) - -set(INSTALL_EXAMPLEDIR "examples") - -find_package(Qt6 COMPONENTS OpenGL) -find_package(Qt6 COMPONENTS Widgets) - - -add_qt_gui_executable(boxes - 3rdparty/fbm.c 3rdparty/fbm.h - boxes.qrc - glbuffers.cpp glbuffers.h - glextensions.cpp glextensions.h - gltrianglemesh.h - main.cpp - qtbox.cpp qtbox.h - roundedbox.cpp roundedbox.h - scene.cpp scene.h - trackball.cpp trackball.h -) -target_link_libraries(boxes PUBLIC - Qt::OpenGL - Qt::Widgets -) - -install(TARGETS boxes - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/widgets/graphicsview/boxes/basic.fsh b/examples/widgets/graphicsview/boxes/basic.fsh deleted file mode 100644 index 327daeef54..0000000000 --- a/examples/widgets/graphicsview/boxes/basic.fsh +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; -uniform vec4 basicColor; - -void main() -{ - vec3 N = normalize(normal); - // assume directional light - - gl_MaterialParameters M = gl_FrontMaterial; - - float NdotL = dot(N, lightDirection.xyz); - float RdotL = dot(reflect(normalize(position), N), lightDirection.xyz); - - vec3 absN = abs(gl_TexCoord[1].xyz); - vec3 texCoord; - if (absN.x > absN.y && absN.x > absN.z) - texCoord = gl_TexCoord[1].yzx; - else if (absN.y > absN.z) - texCoord = gl_TexCoord[1].zxy; - else - texCoord = gl_TexCoord[1].xyz; - texCoord.y *= -sign(texCoord.z); - texCoord += 0.5; - - vec4 texColor = texture2D(tex, texCoord.xy); - vec4 unlitColor = gl_Color * mix(basicColor, vec4(texColor.xyz, 1.0), texColor.w); - gl_FragColor = (ambient + diffuse * max(NdotL, 0.0)) * unlitColor + - M.specular * specular * pow(max(RdotL, 0.0), M.shininess); -} diff --git a/examples/widgets/graphicsview/boxes/boxes.pro b/examples/widgets/graphicsview/boxes/boxes.pro deleted file mode 100644 index 601edd6883..0000000000 --- a/examples/widgets/graphicsview/boxes/boxes.pro +++ /dev/null @@ -1,27 +0,0 @@ -QT += opengl widgets -requires(qtConfig(combobox)) - -qtConfig(opengles.|angle|dynamicgl): error("This example requires Qt to be configured with -opengl desktop") - -HEADERS += 3rdparty/fbm.h \ - glbuffers.h \ - glextensions.h \ - gltrianglemesh.h \ - qtbox.h \ - roundedbox.h \ - scene.h \ - trackball.h -SOURCES += 3rdparty/fbm.c \ - glbuffers.cpp \ - glextensions.cpp \ - main.cpp \ - qtbox.cpp \ - roundedbox.cpp \ - scene.cpp \ - trackball.cpp - -RESOURCES += boxes.qrc - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/widgets/graphicsview/boxes -INSTALLS += target diff --git a/examples/widgets/graphicsview/boxes/boxes.qrc b/examples/widgets/graphicsview/boxes/boxes.qrc deleted file mode 100644 index d27506dc5a..0000000000 --- a/examples/widgets/graphicsview/boxes/boxes.qrc +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE RCC><RCC version="1.0"> -<qresource prefix="/res/boxes"> - <file>cubemap_negx.jpg</file> - <file>cubemap_negy.jpg</file> - <file>cubemap_negz.jpg</file> - <file>cubemap_posx.jpg</file> - <file>cubemap_posy.jpg</file> - <file>cubemap_posz.jpg</file> - <file>square.jpg</file> - <file>basic.vsh</file> - <file>basic.fsh</file> - <file>dotted.fsh</file> - <file>fresnel.fsh</file> - <file>glass.fsh</file> - <file>granite.fsh</file> - <file>marble.fsh</file> - <file>reflection.fsh</file> - <file>refraction.fsh</file> - <file>wood.fsh</file> - <file>parameters.par</file> - <file>qt-logo.png</file> - <file>smiley.png</file> - <file>qt-logo.jpg</file> -</qresource> -</RCC> diff --git a/examples/widgets/graphicsview/boxes/cubemap_negx.jpg b/examples/widgets/graphicsview/boxes/cubemap_negx.jpg Binary files differdeleted file mode 100644 index 07c282eab9..0000000000 --- a/examples/widgets/graphicsview/boxes/cubemap_negx.jpg +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/cubemap_negy.jpg b/examples/widgets/graphicsview/boxes/cubemap_negy.jpg Binary files differdeleted file mode 100644 index 46cd2f9cf3..0000000000 --- a/examples/widgets/graphicsview/boxes/cubemap_negy.jpg +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/cubemap_negz.jpg b/examples/widgets/graphicsview/boxes/cubemap_negz.jpg Binary files differdeleted file mode 100644 index 40c01ddff3..0000000000 --- a/examples/widgets/graphicsview/boxes/cubemap_negz.jpg +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/cubemap_posx.jpg b/examples/widgets/graphicsview/boxes/cubemap_posx.jpg Binary files differdeleted file mode 100644 index 0b42e8a1b1..0000000000 --- a/examples/widgets/graphicsview/boxes/cubemap_posx.jpg +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/cubemap_posy.jpg b/examples/widgets/graphicsview/boxes/cubemap_posy.jpg Binary files differdeleted file mode 100644 index 2aca9b1e98..0000000000 --- a/examples/widgets/graphicsview/boxes/cubemap_posy.jpg +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/cubemap_posz.jpg b/examples/widgets/graphicsview/boxes/cubemap_posz.jpg Binary files differdeleted file mode 100644 index 2e49173848..0000000000 --- a/examples/widgets/graphicsview/boxes/cubemap_posz.jpg +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/dotted.fsh b/examples/widgets/graphicsview/boxes/dotted.fsh deleted file mode 100644 index 5cbf590e21..0000000000 --- a/examples/widgets/graphicsview/boxes/dotted.fsh +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; - -void main() -{ - vec3 N = normalize(normal); - - gl_MaterialParameters M = gl_FrontMaterial; - - // assume directional light - float NdotL = dot(N, lightDirection.xyz); - float RdotL = dot(reflect(normalize(position), N), lightDirection.xyz); - - float r1 = length(fract(7.0 * gl_TexCoord[1].xyz) - 0.5); - float r2 = length(fract(5.0 * gl_TexCoord[1].xyz + 0.2) - 0.5); - float r3 = length(fract(11.0 * gl_TexCoord[1].xyz + 0.7) - 0.5); - vec4 rs = vec4(r1, r2, r3, 0.0); - - vec4 unlitColor = gl_Color * (0.8 - clamp(10.0 * (0.4 - rs), 0.0, 0.2)); - unlitColor.w = 1.0; - gl_FragColor = (ambient + diffuse * max(NdotL, 0.0)) * unlitColor + - M.specular * specular * pow(max(RdotL, 0.0), M.shininess); -} diff --git a/examples/widgets/graphicsview/boxes/fresnel.fsh b/examples/widgets/graphicsview/boxes/fresnel.fsh deleted file mode 100644 index 6758ad5770..0000000000 --- a/examples/widgets/graphicsview/boxes/fresnel.fsh +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; -uniform samplerCube env; -uniform mat4 view; -uniform vec4 basicColor; - -void main() -{ - vec3 N = normalize(normal); - // assume directional light - - gl_MaterialParameters M = gl_FrontMaterial; - - float NdotL = dot(N, lightDirection.xyz); - float RdotL = dot(reflect(normalize(position), N), lightDirection.xyz); - - vec3 absN = abs(gl_TexCoord[1].xyz); - vec3 texCoord; - if (absN.x > absN.y && absN.x > absN.z) - texCoord = gl_TexCoord[1].yzx; - else if (absN.y > absN.z) - texCoord = gl_TexCoord[1].zxy; - else - texCoord = gl_TexCoord[1].xyz; - texCoord.y *= -sign(texCoord.z); - texCoord += 0.5; - - vec4 texColor = texture2D(tex, texCoord.xy); - vec4 unlitColor = gl_Color * mix(basicColor, vec4(texColor.xyz, 1.0), texColor.w); - vec4 litColor = (ambient + diffuse * max(NdotL, 0.0)) * unlitColor + - M.specular * specular * pow(max(RdotL, 0.0), M.shininess); - - vec3 R = 2.0 * dot(-position, N) * N + position; - vec4 reflectedColor = textureCube(env, R * mat3(view[0].xyz, view[1].xyz, view[2].xyz)); - gl_FragColor = mix(litColor, reflectedColor, 0.2 + 0.8 * pow(1.0 + dot(N, normalize(position)), 2.0)); -} diff --git a/examples/widgets/graphicsview/boxes/glass.fsh b/examples/widgets/graphicsview/boxes/glass.fsh deleted file mode 100644 index 528d04e4d3..0000000000 --- a/examples/widgets/graphicsview/boxes/glass.fsh +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; -uniform samplerCube env; -uniform mat4 view; - -// Some arbitrary values -// Arrays don't work here on glsl < 120, apparently. -//const float coeffs[6] = float[6](1.0/4.0, 1.0/4.1, 1.0/4.2, 1.0/4.3, 1.0/4.4, 1.0/4.5); -float coeffs(int i) -{ - return 1.0 / (3.0 + 0.1 * float(i)); -} - -void main() -{ - vec3 N = normalize(normal); - vec3 I = -normalize(position); - mat3 V = mat3(view[0].xyz, view[1].xyz, view[2].xyz); - float IdotN = dot(I, N); - float scales[6]; - vec3 C[6]; - for (int i = 0; i < 6; ++i) { - scales[i] = (IdotN - sqrt(1.0 - coeffs(i) + coeffs(i) * (IdotN * IdotN))); - C[i] = textureCube(env, (-I + coeffs(i) * N) * V).xyz; - } - vec4 refractedColor = 0.25 * vec4(C[5].x + 2.0*C[0].x + C[1].x, C[1].y + 2.0*C[2].y + C[3].y, - C[3].z + 2.0*C[4].z + C[5].z, 4.0); - - vec3 R = 2.0 * dot(-position, N) * N + position; - vec4 reflectedColor = textureCube(env, R * V); - - gl_FragColor = mix(refractedColor, reflectedColor, 0.4 + 0.6 * pow(1.0 - IdotN, 2.0)); -} diff --git a/examples/widgets/graphicsview/boxes/glbuffers.cpp b/examples/widgets/graphicsview/boxes/glbuffers.cpp deleted file mode 100644 index 91de336af3..0000000000 --- a/examples/widgets/graphicsview/boxes/glbuffers.cpp +++ /dev/null @@ -1,406 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "glbuffers.h" - -void qgluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) -{ - const GLdouble ymax = zNear * tan(qDegreesToRadians(fovy) / 2.0); - const GLdouble ymin = -ymax; - const GLdouble xmin = ymin * aspect; - const GLdouble xmax = ymax * aspect; - glFrustum(xmin, xmax, ymin, ymax, zNear, zFar); -} - -//============================================================================// -// GLTexture // -//============================================================================// - -GLTexture::GLTexture() -{ - glGenTextures(1, &m_texture); -} - -GLTexture::~GLTexture() -{ - glDeleteTextures(1, &m_texture); -} - -//============================================================================// -// GLTexture2D // -//============================================================================// - -GLTexture2D::GLTexture2D(int width, int height) -{ - glBindTexture(GL_TEXTURE_2D, m_texture); - glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, - GL_BGRA, GL_UNSIGNED_BYTE, nullptr); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - //glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); - glBindTexture(GL_TEXTURE_2D, 0); -} - - -GLTexture2D::GLTexture2D(const QString &fileName, int width, int height) -{ - // TODO: Add error handling. - QImage image(fileName); - - if (image.isNull()) { - m_failed = true; - return; - } - - image = image.convertToFormat(QImage::Format_ARGB32); - - //qDebug() << "Image size:" << image.width() << "x" << image.height(); - if (width <= 0) - width = image.width(); - if (height <= 0) - height = image.height(); - if (width != image.width() || height != image.height()) - image = image.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - - glBindTexture(GL_TEXTURE_2D, m_texture); - - // Works on x86, so probably works on all little-endian systems. - // Does it work on big-endian systems? - glTexImage2D(GL_TEXTURE_2D, 0, 4, image.width(), image.height(), 0, - GL_BGRA, GL_UNSIGNED_BYTE, image.bits()); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - //glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); - glBindTexture(GL_TEXTURE_2D, 0); -} - -void GLTexture2D::load(int width, int height, QRgb *data) -{ - glBindTexture(GL_TEXTURE_2D, m_texture); - glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, - GL_BGRA, GL_UNSIGNED_BYTE, data); - glBindTexture(GL_TEXTURE_2D, 0); -} - -void GLTexture2D::bind() -{ - glBindTexture(GL_TEXTURE_2D, m_texture); - glEnable(GL_TEXTURE_2D); -} - -void GLTexture2D::unbind() -{ - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); -} - - -//============================================================================// -// GLTexture3D // -//============================================================================// - -GLTexture3D::GLTexture3D(int width, int height, int depth) -{ - GLBUFFERS_ASSERT_OPENGL("GLTexture3D::GLTexture3D", glTexImage3D, return) - - glBindTexture(GL_TEXTURE_3D, m_texture); - glTexImage3D(GL_TEXTURE_3D, 0, 4, width, height, depth, 0, - GL_BGRA, GL_UNSIGNED_BYTE, nullptr); - - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - //glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - //glTexParameteri(GL_TEXTURE_3D, GL_GENERATE_MIPMAP, GL_TRUE); - glBindTexture(GL_TEXTURE_3D, 0); -} - -void GLTexture3D::load(int width, int height, int depth, QRgb *data) -{ - GLBUFFERS_ASSERT_OPENGL("GLTexture3D::load", glTexImage3D, return) - - glBindTexture(GL_TEXTURE_3D, m_texture); - glTexImage3D(GL_TEXTURE_3D, 0, 4, width, height, depth, 0, - GL_BGRA, GL_UNSIGNED_BYTE, data); - glBindTexture(GL_TEXTURE_3D, 0); -} - -void GLTexture3D::bind() -{ - glBindTexture(GL_TEXTURE_3D, m_texture); - glEnable(GL_TEXTURE_3D); -} - -void GLTexture3D::unbind() -{ - glBindTexture(GL_TEXTURE_3D, 0); - glDisable(GL_TEXTURE_3D); -} - -//============================================================================// -// GLTextureCube // -//============================================================================// - -GLTextureCube::GLTextureCube(int size) -{ - glBindTexture(GL_TEXTURE_CUBE_MAP, m_texture); - - for (int i = 0; i < 6; ++i) - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 4, size, size, 0, - GL_BGRA, GL_UNSIGNED_BYTE, nullptr); - - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - //glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - //glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_GENERATE_MIPMAP, GL_TRUE); - glBindTexture(GL_TEXTURE_CUBE_MAP, 0); -} - -GLTextureCube::GLTextureCube(const QStringList &fileNames, int size) -{ - // TODO: Add error handling. - - glBindTexture(GL_TEXTURE_CUBE_MAP, m_texture); - - int index = 0; - for (const QString &file : fileNames) { - QImage image(file); - if (image.isNull()) { - m_failed = true; - break; - } - - image = image.convertToFormat(QImage::Format_ARGB32); - - //qDebug() << "Image size:" << image.width() << "x" << image.height(); - if (size <= 0) - size = image.width(); - if (size != image.width() || size != image.height()) - image = image.scaled(size, size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - - // Works on x86, so probably works on all little-endian systems. - // Does it work on big-endian systems? - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + index, 0, 4, image.width(), image.height(), 0, - GL_BGRA, GL_UNSIGNED_BYTE, image.bits()); - - if (++index == 6) - break; - } - - // Clear remaining faces. - while (index < 6) { - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + index, 0, 4, size, size, 0, - GL_BGRA, GL_UNSIGNED_BYTE, nullptr); - ++index; - } - - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - //glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - //glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_GENERATE_MIPMAP, GL_TRUE); - glBindTexture(GL_TEXTURE_CUBE_MAP, 0); -} - -void GLTextureCube::load(int size, int face, QRgb *data) -{ - glBindTexture(GL_TEXTURE_CUBE_MAP, m_texture); - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, 4, size, size, 0, - GL_BGRA, GL_UNSIGNED_BYTE, data); - glBindTexture(GL_TEXTURE_CUBE_MAP, 0); -} - -void GLTextureCube::bind() -{ - glBindTexture(GL_TEXTURE_CUBE_MAP, m_texture); - glEnable(GL_TEXTURE_CUBE_MAP); -} - -void GLTextureCube::unbind() -{ - glBindTexture(GL_TEXTURE_CUBE_MAP, 0); - glDisable(GL_TEXTURE_CUBE_MAP); -} - -//============================================================================// -// GLFrameBufferObject // -//============================================================================// - -GLFrameBufferObject::GLFrameBufferObject(int width, int height) - : m_width(width) - , m_height(height) -{ - GLBUFFERS_ASSERT_OPENGL("GLFrameBufferObject::GLFrameBufferObject", - glGenFramebuffersEXT && glGenRenderbuffersEXT && glBindRenderbufferEXT && glRenderbufferStorageEXT, return) - - // TODO: share depth buffers of same size - glGenFramebuffersEXT(1, &m_fbo); - //glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fbo); - glGenRenderbuffersEXT(1, &m_depthBuffer); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, m_depthBuffer); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, m_width, m_height); - //glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, m_depthBuffer); - //glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); -} - -GLFrameBufferObject::~GLFrameBufferObject() -{ - GLBUFFERS_ASSERT_OPENGL("GLFrameBufferObject::~GLFrameBufferObject", - glDeleteFramebuffersEXT && glDeleteRenderbuffersEXT, return) - - glDeleteFramebuffersEXT(1, &m_fbo); - glDeleteRenderbuffersEXT(1, &m_depthBuffer); -} - -void GLFrameBufferObject::setAsRenderTarget(bool state) -{ - GLBUFFERS_ASSERT_OPENGL("GLFrameBufferObject::setAsRenderTarget", glBindFramebufferEXT, return) - - if (state) { - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fbo); - glPushAttrib(GL_VIEWPORT_BIT); - glViewport(0, 0, m_width, m_height); - } else { - glPopAttrib(); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - } -} - -bool GLFrameBufferObject::isComplete() -{ - GLBUFFERS_ASSERT_OPENGL("GLFrameBufferObject::isComplete", glCheckFramebufferStatusEXT, return false) - - return GL_FRAMEBUFFER_COMPLETE_EXT == glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); -} - -//============================================================================// -// GLRenderTargetCube // -//============================================================================// - -GLRenderTargetCube::GLRenderTargetCube(int size) - : GLTextureCube(size) - , m_fbo(size, size) -{ -} - -void GLRenderTargetCube::begin(int face) -{ - GLBUFFERS_ASSERT_OPENGL("GLRenderTargetCube::begin", - glFramebufferTexture2DEXT && glFramebufferRenderbufferEXT, return) - - m_fbo.setAsRenderTarget(true); - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, m_texture, 0); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, m_fbo.m_depthBuffer); -} - -void GLRenderTargetCube::end() -{ - m_fbo.setAsRenderTarget(false); -} - -void GLRenderTargetCube::getViewMatrix(QMatrix4x4& mat, int face) -{ - if (face < 0 || face >= 6) { - qWarning("GLRenderTargetCube::getViewMatrix: 'face' must be in the range [0, 6). (face == %d)", face); - return; - } - - static constexpr int perm[6][3] = { - {2, 1, 0}, - {2, 1, 0}, - {0, 2, 1}, - {0, 2, 1}, - {0, 1, 2}, - {0, 1, 2}, - }; - - static constexpr float signs[6][3] = { - {-1.0f, -1.0f, -1.0f}, - {+1.0f, -1.0f, +1.0f}, - {+1.0f, +1.0f, -1.0f}, - {+1.0f, -1.0f, +1.0f}, - {+1.0f, -1.0f, -1.0f}, - {-1.0f, -1.0f, +1.0f}, - }; - - mat.fill(0.0f); - for (int i = 0; i < 3; ++i) - mat(i, perm[face][i]) = signs[face][i]; - mat(3, 3) = 1.0f; -} - -void GLRenderTargetCube::getProjectionMatrix(QMatrix4x4& mat, float nearZ, float farZ) -{ - static const QMatrix4x4 reference( - 1.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 1.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, -1.0f, 0.0f); - - mat = reference; - mat(2, 2) = (nearZ+farZ)/(nearZ-farZ); - mat(2, 3) = 2.0f*nearZ*farZ/(nearZ-farZ); -} diff --git a/examples/widgets/graphicsview/boxes/glbuffers.h b/examples/widgets/graphicsview/boxes/glbuffers.h deleted file mode 100644 index 4318e8ac24..0000000000 --- a/examples/widgets/graphicsview/boxes/glbuffers.h +++ /dev/null @@ -1,372 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef GLBUFFERS_H -#define GLBUFFERS_H - -//#include <GL/glew.h> -#include "glextensions.h" - -#include <QtWidgets> -#include <QtOpenGL> - -#define BUFFER_OFFSET(i) ((char*)0 + (i)) -#define SIZE_OF_MEMBER(cls, member) sizeof(static_cast<cls *>(nullptr)->member) - -#define GLBUFFERS_ASSERT_OPENGL(prefix, assertion, returnStatement) \ -if (m_failed || !(assertion)) { \ - if (!m_failed) qCritical(prefix ": The necessary OpenGL functions are not available."); \ - m_failed = true; \ - returnStatement; \ -} - -void qgluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); - -QT_BEGIN_NAMESPACE -class QMatrix4x4; -QT_END_NAMESPACE - -class GLTexture -{ -public: - GLTexture(); - virtual ~GLTexture(); - virtual void bind() = 0; - virtual void unbind() = 0; - virtual bool failed() const {return m_failed;} -protected: - GLuint m_texture = 0; - bool m_failed = false; -}; - -class GLFrameBufferObject -{ -public: - friend class GLRenderTargetCube; - // friend class GLRenderTarget2D; - - GLFrameBufferObject(int width, int height); - virtual ~GLFrameBufferObject(); - bool isComplete(); - virtual bool failed() const {return m_failed;} -protected: - void setAsRenderTarget(bool state = true); - GLuint m_fbo = 0; - GLuint m_depthBuffer = 0; - int m_width, m_height; - bool m_failed = false; -}; - -class GLTexture2D : public GLTexture -{ -public: - GLTexture2D(int width, int height); - explicit GLTexture2D(const QString &fileName, int width = 0, int height = 0); - void load(int width, int height, QRgb *data); - void bind() override; - void unbind() override; -}; - -class GLTexture3D : public GLTexture -{ -public: - GLTexture3D(int width, int height, int depth); - // TODO: Implement function below - //GLTexture3D(const QString& fileName, int width = 0, int height = 0); - void load(int width, int height, int depth, QRgb *data); - void bind() override; - void unbind() override; -}; - -class GLTextureCube : public GLTexture -{ -public: - GLTextureCube(int size); - explicit GLTextureCube(const QStringList &fileNames, int size = 0); - void load(int size, int face, QRgb *data); - void bind() override; - void unbind() override; -}; - -// TODO: Define and implement class below -//class GLRenderTarget2D : public GLTexture2D - -class GLRenderTargetCube : public GLTextureCube -{ -public: - GLRenderTargetCube(int size); - // begin rendering to one of the cube's faces. 0 <= face < 6 - void begin(int face); - // end rendering - void end(); - bool failed() const override { return m_failed || m_fbo.failed(); } - - static void getViewMatrix(QMatrix4x4& mat, int face); - static void getProjectionMatrix(QMatrix4x4& mat, float nearZ, float farZ); -private: - GLFrameBufferObject m_fbo; -}; - -struct VertexDescription -{ - enum - { - Null = 0, // Terminates a VertexDescription array - Position, - TexCoord, - Normal, - Color, - }; - int field; // Position, TexCoord, Normal, Color - int type; // GL_FLOAT, GL_UNSIGNED_BYTE - int count; // number of elements - int offset; // field's offset into vertex struct - int index; // 0 (unused at the moment) -}; - -// Implementation of interleaved buffers. -// 'T' is a struct which must include a null-terminated static array -// 'VertexDescription* description'. -// Example: -/* -struct Vertex -{ - GLfloat position[3]; - GLfloat texCoord[2]; - GLfloat normal[3]; - GLbyte color[4]; - static VertexDescription description[]; -}; - -VertexDescription Vertex::description[] = { - {VertexDescription::Position, GL_FLOAT, SIZE_OF_MEMBER(Vertex, position) / sizeof(GLfloat), offsetof(Vertex, position), 0}, - {VertexDescription::TexCoord, GL_FLOAT, SIZE_OF_MEMBER(Vertex, texCoord) / sizeof(GLfloat), offsetof(Vertex, texCoord), 0}, - {VertexDescription::Normal, GL_FLOAT, SIZE_OF_MEMBER(Vertex, normal) / sizeof(GLfloat), offsetof(Vertex, normal), 0}, - {VertexDescription::Color, GL_BYTE, SIZE_OF_MEMBER(Vertex, color) / sizeof(GLbyte), offsetof(Vertex, color), 0}, - {VertexDescription::Null, 0, 0, 0, 0}, -}; -*/ -template<class T> -class GLVertexBuffer -{ -public: - GLVertexBuffer(int length, const T *data = nullptr, int mode = GL_STATIC_DRAW) - { - GLBUFFERS_ASSERT_OPENGL("GLVertexBuffer::GLVertexBuffer", glGenBuffers && glBindBuffer && glBufferData, return) - - glGenBuffers(1, &m_buffer); - glBindBuffer(GL_ARRAY_BUFFER, m_buffer); - glBufferData(GL_ARRAY_BUFFER, (m_length = length) * sizeof(T), data, mode); - } - - ~GLVertexBuffer() - { - GLBUFFERS_ASSERT_OPENGL("GLVertexBuffer::~GLVertexBuffer", glDeleteBuffers, return) - - glDeleteBuffers(1, &m_buffer); - } - - void bind() - { - GLBUFFERS_ASSERT_OPENGL("GLVertexBuffer::bind", glBindBuffer, return) - - glBindBuffer(GL_ARRAY_BUFFER, m_buffer); - for (VertexDescription *desc = T::description; desc->field != VertexDescription::Null; ++desc) { - switch (desc->field) { - case VertexDescription::Position: - glVertexPointer(desc->count, desc->type, sizeof(T), BUFFER_OFFSET(desc->offset)); - glEnableClientState(GL_VERTEX_ARRAY); - break; - case VertexDescription::TexCoord: - glTexCoordPointer(desc->count, desc->type, sizeof(T), BUFFER_OFFSET(desc->offset)); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - break; - case VertexDescription::Normal: - glNormalPointer(desc->type, sizeof(T), BUFFER_OFFSET(desc->offset)); - glEnableClientState(GL_NORMAL_ARRAY); - break; - case VertexDescription::Color: - glColorPointer(desc->count, desc->type, sizeof(T), BUFFER_OFFSET(desc->offset)); - glEnableClientState(GL_COLOR_ARRAY); - break; - default: - break; - } - } - } - - void unbind() - { - GLBUFFERS_ASSERT_OPENGL("GLVertexBuffer::unbind", glBindBuffer, return) - - glBindBuffer(GL_ARRAY_BUFFER, 0); - for (VertexDescription *desc = T::description; desc->field != VertexDescription::Null; ++desc) { - switch (desc->field) { - case VertexDescription::Position: - glDisableClientState(GL_VERTEX_ARRAY); - break; - case VertexDescription::TexCoord: - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - break; - case VertexDescription::Normal: - glDisableClientState(GL_NORMAL_ARRAY); - break; - case VertexDescription::Color: - glDisableClientState(GL_COLOR_ARRAY); - break; - default: - break; - } - } - } - - int length() const {return m_length;} - - T *lock() - { - GLBUFFERS_ASSERT_OPENGL("GLVertexBuffer::lock", glBindBuffer && glMapBuffer, return nullptr) - - glBindBuffer(GL_ARRAY_BUFFER, m_buffer); - //glBufferData(GL_ARRAY_BUFFER, m_length, NULL, m_mode); - GLvoid* buffer = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE); - m_failed = (buffer == nullptr); - return reinterpret_cast<T *>(buffer); - } - - void unlock() - { - GLBUFFERS_ASSERT_OPENGL("GLVertexBuffer::unlock", glBindBuffer && glUnmapBuffer, return) - - glBindBuffer(GL_ARRAY_BUFFER, m_buffer); - glUnmapBuffer(GL_ARRAY_BUFFER); - } - - bool failed() - { - return m_failed; - } - -private: - int m_length = 0; - int m_mode = 0; - GLuint m_buffer = 0; - bool m_failed = false; -}; - -template<class T> -class GLIndexBuffer -{ -public: - GLIndexBuffer(int length, const T *data = nullptr, int mode = GL_STATIC_DRAW) - : m_length(0) - , m_mode(mode) - , m_buffer(0) - , m_failed(false) - { - GLBUFFERS_ASSERT_OPENGL("GLIndexBuffer::GLIndexBuffer", glGenBuffers && glBindBuffer && glBufferData, return) - - glGenBuffers(1, &m_buffer); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_buffer); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, (m_length = length) * sizeof(T), data, mode); - } - - ~GLIndexBuffer() - { - GLBUFFERS_ASSERT_OPENGL("GLIndexBuffer::~GLIndexBuffer", glDeleteBuffers, return) - - glDeleteBuffers(1, &m_buffer); - } - - void bind() - { - GLBUFFERS_ASSERT_OPENGL("GLIndexBuffer::bind", glBindBuffer, return) - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_buffer); - } - - void unbind() - { - GLBUFFERS_ASSERT_OPENGL("GLIndexBuffer::unbind", glBindBuffer, return) - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - } - - int length() const {return m_length;} - - T *lock() - { - GLBUFFERS_ASSERT_OPENGL("GLIndexBuffer::lock", glBindBuffer && glMapBuffer, return nullptr) - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_buffer); - GLvoid* buffer = glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_READ_WRITE); - m_failed = (buffer == nullptr); - return reinterpret_cast<T *>(buffer); - } - - void unlock() - { - GLBUFFERS_ASSERT_OPENGL("GLIndexBuffer::unlock", glBindBuffer && glUnmapBuffer, return) - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_buffer); - glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER); - } - - bool failed() - { - return m_failed; - } - -private: - int m_length, m_mode; - GLuint m_buffer; - bool m_failed; -}; - -#endif diff --git a/examples/widgets/graphicsview/boxes/glextensions.cpp b/examples/widgets/graphicsview/boxes/glextensions.cpp deleted file mode 100644 index ac89911046..0000000000 --- a/examples/widgets/graphicsview/boxes/glextensions.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "glextensions.h" - -#define RESOLVE_GL_FUNC(f) ok &= bool((f = (_gl##f) context->getProcAddress(QLatin1String("gl" #f)))); - -bool GLExtensionFunctions::resolve(const QGLContext *context) -{ - bool ok = true; - - RESOLVE_GL_FUNC(GenFramebuffersEXT) - RESOLVE_GL_FUNC(GenRenderbuffersEXT) - RESOLVE_GL_FUNC(BindRenderbufferEXT) - RESOLVE_GL_FUNC(RenderbufferStorageEXT) - RESOLVE_GL_FUNC(DeleteFramebuffersEXT) - RESOLVE_GL_FUNC(DeleteRenderbuffersEXT) - RESOLVE_GL_FUNC(BindFramebufferEXT) - RESOLVE_GL_FUNC(FramebufferTexture2DEXT) - RESOLVE_GL_FUNC(FramebufferRenderbufferEXT) - RESOLVE_GL_FUNC(CheckFramebufferStatusEXT) - - RESOLVE_GL_FUNC(ActiveTexture) - RESOLVE_GL_FUNC(TexImage3D) - - RESOLVE_GL_FUNC(GenBuffers) - RESOLVE_GL_FUNC(BindBuffer) - RESOLVE_GL_FUNC(BufferData) - RESOLVE_GL_FUNC(DeleteBuffers) - RESOLVE_GL_FUNC(MapBuffer) - RESOLVE_GL_FUNC(UnmapBuffer) - - return ok; -} - -bool GLExtensionFunctions::fboSupported() { - return GenFramebuffersEXT - && GenRenderbuffersEXT - && BindRenderbufferEXT - && RenderbufferStorageEXT - && DeleteFramebuffersEXT - && DeleteRenderbuffersEXT - && BindFramebufferEXT - && FramebufferTexture2DEXT - && FramebufferRenderbufferEXT - && CheckFramebufferStatusEXT; -} - -bool GLExtensionFunctions::openGL15Supported() { - return ActiveTexture - && TexImage3D - && GenBuffers - && BindBuffer - && BufferData - && DeleteBuffers - && MapBuffer - && UnmapBuffer; -} - -#undef RESOLVE_GL_FUNC diff --git a/examples/widgets/graphicsview/boxes/glextensions.h b/examples/widgets/graphicsview/boxes/glextensions.h deleted file mode 100644 index 685700d866..0000000000 --- a/examples/widgets/graphicsview/boxes/glextensions.h +++ /dev/null @@ -1,204 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef GLEXTENSIONS_H -#define GLEXTENSIONS_H - -#include <QtOpenGL> - -/* -Functions resolved: - -glGenFramebuffersEXT -glGenRenderbuffersEXT -glBindRenderbufferEXT -glRenderbufferStorageEXT -glDeleteFramebuffersEXT -glDeleteRenderbuffersEXT -glBindFramebufferEXT -glFramebufferTexture2DEXT -glFramebufferRenderbufferEXT -glCheckFramebufferStatusEXT - -glActiveTexture -glTexImage3D - -glGenBuffers -glBindBuffer -glBufferData -glDeleteBuffers -glMapBuffer -glUnmapBuffer -*/ - -#ifndef APIENTRY -# define APIENTRY -#endif -#ifndef APIENTRYP -# define APIENTRYP APIENTRY * -#endif - -#ifndef GL_VERSION_1_2 -#define GL_TEXTURE_3D 0x806F -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_BGRA 0x80E1 -#endif - -#ifndef GL_VERSION_1_3 -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -//#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -//#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -//#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -//#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -//#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#endif - -#ifndef GL_ARB_vertex_buffer_object -typedef ptrdiff_t GLsizeiptrARB; -#endif - -#ifndef GL_VERSION_1_5 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_READ_WRITE 0x88BA -#define GL_STATIC_DRAW 0x88E4 -#endif - -#ifndef GL_EXT_framebuffer_object -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#endif - -typedef void (APIENTRY *_glGenFramebuffersEXT) (GLsizei, GLuint *); -typedef void (APIENTRY *_glGenRenderbuffersEXT) (GLsizei, GLuint *); -typedef void (APIENTRY *_glBindRenderbufferEXT) (GLenum, GLuint); -typedef void (APIENTRY *_glRenderbufferStorageEXT) (GLenum, GLenum, GLsizei, GLsizei); -typedef void (APIENTRY *_glDeleteFramebuffersEXT) (GLsizei, const GLuint*); -typedef void (APIENTRY *_glDeleteRenderbuffersEXT) (GLsizei, const GLuint*); -typedef void (APIENTRY *_glBindFramebufferEXT) (GLenum, GLuint); -typedef void (APIENTRY *_glFramebufferTexture2DEXT) (GLenum, GLenum, GLenum, GLuint, GLint); -typedef void (APIENTRY *_glFramebufferRenderbufferEXT) (GLenum, GLenum, GLenum, GLuint); -typedef GLenum (APIENTRY *_glCheckFramebufferStatusEXT) (GLenum); - -typedef void (APIENTRY *_glActiveTexture) (GLenum); -typedef void (APIENTRY *_glTexImage3D) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); - -typedef void (APIENTRY *_glGenBuffers) (GLsizei, GLuint *); -typedef void (APIENTRY *_glBindBuffer) (GLenum, GLuint); -typedef void (APIENTRY *_glBufferData) (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); -typedef void (APIENTRY *_glDeleteBuffers) (GLsizei, const GLuint *); -typedef void *(APIENTRY *_glMapBuffer) (GLenum, GLenum); -typedef GLboolean (APIENTRY *_glUnmapBuffer) (GLenum); - -struct GLExtensionFunctions -{ - bool resolve(const QGLContext *context); - - bool fboSupported(); - bool openGL15Supported(); // the rest: multi-texture, 3D-texture, vertex buffer objects - - _glGenFramebuffersEXT GenFramebuffersEXT; - _glGenRenderbuffersEXT GenRenderbuffersEXT; - _glBindRenderbufferEXT BindRenderbufferEXT; - _glRenderbufferStorageEXT RenderbufferStorageEXT; - _glDeleteFramebuffersEXT DeleteFramebuffersEXT; - _glDeleteRenderbuffersEXT DeleteRenderbuffersEXT; - _glBindFramebufferEXT BindFramebufferEXT; - _glFramebufferTexture2DEXT FramebufferTexture2DEXT; - _glFramebufferRenderbufferEXT FramebufferRenderbufferEXT; - _glCheckFramebufferStatusEXT CheckFramebufferStatusEXT; - - _glActiveTexture ActiveTexture; - _glTexImage3D TexImage3D; - - _glGenBuffers GenBuffers; - _glBindBuffer BindBuffer; - _glBufferData BufferData; - _glDeleteBuffers DeleteBuffers; - _glMapBuffer MapBuffer; - _glUnmapBuffer UnmapBuffer; -}; - -inline GLExtensionFunctions &getGLExtensionFunctions() -{ - static GLExtensionFunctions funcs; - return funcs; -} - -#define glGenFramebuffersEXT getGLExtensionFunctions().GenFramebuffersEXT -#define glGenRenderbuffersEXT getGLExtensionFunctions().GenRenderbuffersEXT -#define glBindRenderbufferEXT getGLExtensionFunctions().BindRenderbufferEXT -#define glRenderbufferStorageEXT getGLExtensionFunctions().RenderbufferStorageEXT -#define glDeleteFramebuffersEXT getGLExtensionFunctions().DeleteFramebuffersEXT -#define glDeleteRenderbuffersEXT getGLExtensionFunctions().DeleteRenderbuffersEXT -#define glBindFramebufferEXT getGLExtensionFunctions().BindFramebufferEXT -#define glFramebufferTexture2DEXT getGLExtensionFunctions().FramebufferTexture2DEXT -#define glFramebufferRenderbufferEXT getGLExtensionFunctions().FramebufferRenderbufferEXT -#define glCheckFramebufferStatusEXT getGLExtensionFunctions().CheckFramebufferStatusEXT - -#define glActiveTexture getGLExtensionFunctions().ActiveTexture -#define glTexImage3D getGLExtensionFunctions().TexImage3D - -#define glGenBuffers getGLExtensionFunctions().GenBuffers -#define glBindBuffer getGLExtensionFunctions().BindBuffer -#define glBufferData getGLExtensionFunctions().BufferData -#define glDeleteBuffers getGLExtensionFunctions().DeleteBuffers -#define glMapBuffer getGLExtensionFunctions().MapBuffer -#define glUnmapBuffer getGLExtensionFunctions().UnmapBuffer - -#endif diff --git a/examples/widgets/graphicsview/boxes/gltrianglemesh.h b/examples/widgets/graphicsview/boxes/gltrianglemesh.h deleted file mode 100644 index e5c4f51514..0000000000 --- a/examples/widgets/graphicsview/boxes/gltrianglemesh.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef GLTRIANGLEMESH_H -#define GLTRIANGLEMESH_H - -#include "glbuffers.h" -#include "glextensions.h" - -#include <QtWidgets> -#include <QtOpenGL> - - -template<class TVertex, class TIndex> -class GLTriangleMesh -{ -public: - GLTriangleMesh(int vertexCount, int indexCount) : m_vb(vertexCount), m_ib(indexCount) - { - } - - virtual ~GLTriangleMesh() - { - } - - virtual void draw() - { - if (failed()) - return; - - int type = GL_UNSIGNED_INT; - if (sizeof(TIndex) == sizeof(char)) type = GL_UNSIGNED_BYTE; - if (sizeof(TIndex) == sizeof(short)) type = GL_UNSIGNED_SHORT; - - m_vb.bind(); - m_ib.bind(); - glDrawElements(GL_TRIANGLES, m_ib.length(), type, BUFFER_OFFSET(0)); - m_vb.unbind(); - m_ib.unbind(); - } - - bool failed() - { - return m_vb.failed() || m_ib.failed(); - } -protected: - GLVertexBuffer<TVertex> m_vb; - GLIndexBuffer<TIndex> m_ib; -}; - - -#endif diff --git a/examples/widgets/graphicsview/boxes/granite.fsh b/examples/widgets/graphicsview/boxes/granite.fsh deleted file mode 100644 index 5dcde5d2b1..0000000000 --- a/examples/widgets/graphicsview/boxes/granite.fsh +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; -uniform sampler3D noise; - -//const vec4 graniteColors[3] = {vec4(0.0, 0.0, 0.0, 1), vec4(0.30, 0.15, 0.10, 1), vec4(0.80, 0.70, 0.75, 1)}; -uniform vec4 graniteColors[3]; - -float steep(float x) -{ - return clamp(5.0 * x - 2.0, 0.0, 1.0); -} - -void main() -{ - vec2 turbulence = vec2(0, 0); - float scale = 1.0; - for (int i = 0; i < 4; ++i) { - turbulence += scale * (texture3D(noise, gl_TexCoord[1].xyz / scale).xy - 0.5); - scale *= 0.5; - } - - vec3 N = normalize(normal); - // assume directional light - - gl_MaterialParameters M = gl_FrontMaterial; - - float NdotL = dot(N, lightDirection.xyz); - float RdotL = dot(reflect(normalize(position), N), lightDirection.xyz); - - vec4 unlitColor = mix(graniteColors[1], mix(graniteColors[0], graniteColors[2], steep(0.5 + turbulence.y)), 4.0 * abs(turbulence.x)); - gl_FragColor = (ambient + diffuse * max(NdotL, 0.0)) * unlitColor + - M.specular * specular * pow(max(RdotL, 0.0), M.shininess); -} diff --git a/examples/widgets/graphicsview/boxes/main.cpp b/examples/widgets/graphicsview/boxes/main.cpp deleted file mode 100644 index 2b3e6d3389..0000000000 --- a/examples/widgets/graphicsview/boxes/main.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "glextensions.h" -#include "scene.h" - -#include <QGLWidget> -#include <QtWidgets> - -class GraphicsView : public QGraphicsView -{ -public: - GraphicsView() - { - setWindowTitle(tr("Boxes")); - setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - //setRenderHints(QPainter::SmoothPixmapTransform); - } - -protected: - void resizeEvent(QResizeEvent *event) override { - if (scene()) - scene()->setSceneRect(QRect(QPoint(0, 0), event->size())); - QGraphicsView::resizeEvent(event); - } -}; - -inline bool matchString(const char *extensionString, const char *subString) -{ - int subStringLength = strlen(subString); - return (strncmp(extensionString, subString, subStringLength) == 0) - && ((extensionString[subStringLength] == ' ') || (extensionString[subStringLength] == '\0')); -} - -bool necessaryExtensionsSupported() -{ - const char *extensionString = reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)); - const char *p = extensionString; - - const int GL_EXT_FBO = 1; - const int GL_ARB_VS = 2; - const int GL_ARB_FS = 4; - const int GL_ARB_SO = 8; - int extensions = 0; - - while (*p) { - if (matchString(p, "GL_EXT_framebuffer_object")) - extensions |= GL_EXT_FBO; - else if (matchString(p, "GL_ARB_vertex_shader")) - extensions |= GL_ARB_VS; - else if (matchString(p, "GL_ARB_fragment_shader")) - extensions |= GL_ARB_FS; - else if (matchString(p, "GL_ARB_shader_objects")) - extensions |= GL_ARB_SO; - while ((*p != ' ') && (*p != '\0')) - ++p; - if (*p == ' ') - ++p; - } - return (extensions == 15); -} - -int main(int argc, char **argv) -{ - QApplication app(argc, argv); - - if ((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_1_5) == 0) { - QMessageBox::critical(nullptr, "OpenGL features missing", - "OpenGL version 1.5 or higher is required to run this demo.\n" - "The program will now exit."); - return -1; - } - - int maxTextureSize = 1024; - QGLWidget *widget = new QGLWidget(QGLFormat(QGL::SampleBuffers)); - widget->makeCurrent(); - - if (!necessaryExtensionsSupported()) { - QMessageBox::critical(nullptr, "OpenGL features missing", - "The OpenGL extensions required to run this demo are missing.\n" - "The program will now exit."); - delete widget; - return -2; - } - - // Check if all the necessary functions are resolved. - if (!getGLExtensionFunctions().resolve(widget->context())) { - QMessageBox::critical(nullptr, "OpenGL features missing", - "Failed to resolve OpenGL functions required to run this demo.\n" - "The program will now exit."); - delete widget; - return -3; - } - - // TODO: Make conditional for final release - QMessageBox::information(nullptr, "For your information", - "This demo can be GPU and CPU intensive and may\n" - "work poorly or not at all on your system."); - - widget->makeCurrent(); // The current context must be set before calling Scene's constructor - Scene scene(1024, 768, maxTextureSize); - GraphicsView view; - view.setViewport(widget); - view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate); - view.setScene(&scene); - view.show(); - - return app.exec(); -} - diff --git a/examples/widgets/graphicsview/boxes/marble.fsh b/examples/widgets/graphicsview/boxes/marble.fsh deleted file mode 100644 index c0b1980a67..0000000000 --- a/examples/widgets/graphicsview/boxes/marble.fsh +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; -uniform sampler3D noise; - -//const vec4 marbleColors[2] = {vec4(0.9, 0.9, 0.9, 1), vec4(0.6, 0.5, 0.5, 1)}; -uniform vec4 marbleColors[2]; - -void main() -{ - float turbulence = 0.0; - float scale = 1.0; - for (int i = 0; i < 4; ++i) { - turbulence += scale * (texture3D(noise, 0.125 * gl_TexCoord[1].xyz / scale).x - 0.5); - scale *= 0.5; - } - - vec3 N = normalize(normal); - // assume directional light - - gl_MaterialParameters M = gl_FrontMaterial; - - float NdotL = dot(N, lightDirection.xyz); - float RdotL = dot(reflect(normalize(position), N), lightDirection.xyz); - - vec4 unlitColor = mix(marbleColors[0], marbleColors[1], exp(-4.0 * abs(turbulence))); - gl_FragColor = (ambient + diffuse * max(NdotL, 0.0)) * unlitColor + - M.specular * specular * pow(max(RdotL, 0.0), M.shininess); -} diff --git a/examples/widgets/graphicsview/boxes/parameters.par b/examples/widgets/graphicsview/boxes/parameters.par deleted file mode 100644 index 50e20739b9..0000000000 --- a/examples/widgets/graphicsview/boxes/parameters.par +++ /dev/null @@ -1,5 +0,0 @@ -color basicColor ff0e3d0e -color woodColors ff5e3d33 ffcc9966 -float woodTubulence 0.1 -color graniteColors ff000000 ff4d261a ffccb3bf -color marbleColors ffe6e6e6 ff998080 diff --git a/examples/widgets/graphicsview/boxes/qt-logo.jpg b/examples/widgets/graphicsview/boxes/qt-logo.jpg Binary files differdeleted file mode 100644 index 8d7fab052a..0000000000 --- a/examples/widgets/graphicsview/boxes/qt-logo.jpg +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/qt-logo.png b/examples/widgets/graphicsview/boxes/qt-logo.png Binary files differdeleted file mode 100644 index 0b0b15480c..0000000000 --- a/examples/widgets/graphicsview/boxes/qt-logo.png +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/qtbox.cpp b/examples/widgets/graphicsview/boxes/qtbox.cpp deleted file mode 100644 index 8713aac05d..0000000000 --- a/examples/widgets/graphicsview/boxes/qtbox.cpp +++ /dev/null @@ -1,470 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtbox.h" - -constexpr qreal ROTATE_SPEED_X = 30.0 / 1000.0; -constexpr qreal ROTATE_SPEED_Y = 20.0 / 1000.0; -constexpr qreal ROTATE_SPEED_Z = 40.0 / 1000.0; -constexpr int MAX_ITEM_SIZE = 512; -constexpr int MIN_ITEM_SIZE = 16; - -//============================================================================// -// ItemBase // -//============================================================================// - -ItemBase::ItemBase(int size, int x, int y) : m_size(size), m_startTime(QTime::currentTime()) -{ - setFlag(QGraphicsItem::ItemIsMovable, true); - setFlag(QGraphicsItem::ItemIsSelectable, true); - setFlag(QGraphicsItem::ItemIsFocusable, true); - setAcceptHoverEvents(true); - setPos(x, y); -} - -QRectF ItemBase::boundingRect() const -{ - return QRectF(-m_size / 2, -m_size / 2, m_size, m_size); -} - -void ItemBase::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *) -{ - if (option->state & QStyle::State_Selected) { - painter->setRenderHint(QPainter::Antialiasing, true); - if (option->state & QStyle::State_HasFocus) - painter->setPen(Qt::yellow); - else - painter->setPen(Qt::white); - painter->drawRect(boundingRect()); - - painter->drawLine(m_size / 2 - 9, m_size / 2, m_size / 2, m_size / 2 - 9); - painter->drawLine(m_size / 2 - 6, m_size / 2, m_size / 2, m_size / 2 - 6); - painter->drawLine(m_size / 2 - 3, m_size / 2, m_size / 2, m_size / 2 - 3); - - painter->setRenderHint(QPainter::Antialiasing, false); - } -} - -void ItemBase::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) -{ - if (!isSelected() && scene()) { - scene()->clearSelection(); - setSelected(true); - } - - QMenu menu; - QAction *delAction = menu.addAction("Delete"); - QAction *newAction = menu.addAction("New"); - QAction *growAction = menu.addAction("Grow"); - QAction *shrinkAction = menu.addAction("Shrink"); - - QAction *selectedAction = menu.exec(event->screenPos()); - - if (selectedAction == delAction) - deleteSelectedItems(scene()); - else if (selectedAction == newAction) - duplicateSelectedItems(scene()); - else if (selectedAction == growAction) - growSelectedItems(scene()); - else if (selectedAction == shrinkAction) - shrinkSelectedItems(scene()); -} - -void ItemBase::duplicateSelectedItems(QGraphicsScene *scene) -{ - if (!scene) - return; - - const QList<QGraphicsItem *> selected = scene->selectedItems(); - for (QGraphicsItem *item : selected) { - ItemBase *itemBase = qgraphicsitem_cast<ItemBase *>(item); - if (itemBase) - scene->addItem(itemBase->createNew(itemBase->m_size, itemBase->pos().x() + itemBase->m_size, itemBase->pos().y())); - } -} - -void ItemBase::deleteSelectedItems(QGraphicsScene *scene) -{ - if (!scene) - return; - - const QList<QGraphicsItem *> selected = scene->selectedItems(); - for (QGraphicsItem *item : selected) { - ItemBase *itemBase = qgraphicsitem_cast<ItemBase *>(item); - if (itemBase) - delete itemBase; - } -} - -void ItemBase::growSelectedItems(QGraphicsScene *scene) -{ - if (!scene) - return; - - const QList<QGraphicsItem *> selected = scene->selectedItems(); - for (QGraphicsItem *item : selected) { - ItemBase *itemBase = qgraphicsitem_cast<ItemBase *>(item); - if (itemBase) { - itemBase->prepareGeometryChange(); - itemBase->m_size *= 2; - if (itemBase->m_size > MAX_ITEM_SIZE) - itemBase->m_size = MAX_ITEM_SIZE; - } - } -} - -void ItemBase::shrinkSelectedItems(QGraphicsScene *scene) -{ - if (!scene) - return; - - const QList<QGraphicsItem *> selected = scene->selectedItems(); - for (QGraphicsItem *item : selected) { - ItemBase *itemBase = qgraphicsitem_cast<ItemBase *>(item); - if (itemBase) { - itemBase->prepareGeometryChange(); - itemBase->m_size /= 2; - if (itemBase->m_size < MIN_ITEM_SIZE) - itemBase->m_size = MIN_ITEM_SIZE; - } - } -} - -void ItemBase::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - if (m_isResizing) { - int dx = int(2.0 * event->pos().x()); - int dy = int(2.0 * event->pos().y()); - prepareGeometryChange(); - m_size = (dx > dy ? dx : dy); - if (m_size < MIN_ITEM_SIZE) - m_size = MIN_ITEM_SIZE; - else if (m_size > MAX_ITEM_SIZE) - m_size = MAX_ITEM_SIZE; - } else { - QGraphicsItem::mouseMoveEvent(event); - } -} - -void ItemBase::hoverMoveEvent(QGraphicsSceneHoverEvent *event) -{ - if (m_isResizing || (isInResizeArea(event->pos()) && isSelected())) - setCursor(Qt::SizeFDiagCursor); - else - setCursor(Qt::ArrowCursor); - QGraphicsItem::hoverMoveEvent(event); -} - -void ItemBase::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - static qreal z = 0.0; - setZValue(z += 1.0); - if (event->button() == Qt::LeftButton && isInResizeArea(event->pos())) { - m_isResizing = true; - } else { - QGraphicsItem::mousePressEvent(event); - } -} - -void ItemBase::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - if (event->button() == Qt::LeftButton && m_isResizing) { - m_isResizing = false; - } else { - QGraphicsItem::mouseReleaseEvent(event); - } -} - -void ItemBase::keyPressEvent(QKeyEvent *event) -{ - switch (event->key()) { - case Qt::Key_Delete: - deleteSelectedItems(scene()); - break; - case Qt::Key_Insert: - duplicateSelectedItems(scene()); - break; - case Qt::Key_Plus: - growSelectedItems(scene()); - break; - case Qt::Key_Minus: - shrinkSelectedItems(scene()); - break; - default: - QGraphicsItem::keyPressEvent(event); - break; - } -} - -void ItemBase::wheelEvent(QGraphicsSceneWheelEvent *event) -{ - prepareGeometryChange(); - m_size = int(m_size * qExp(-event->delta() / 600.0)); - m_size = qBound(MIN_ITEM_SIZE, m_size, MAX_ITEM_SIZE); -} - -int ItemBase::type() const -{ - return Type; -} - - -bool ItemBase::isInResizeArea(const QPointF &pos) -{ - return (-pos.y() < pos.x() - m_size + 9); -} - -//============================================================================// -// QtBox // -//============================================================================// - -QtBox::QtBox(int size, int x, int y) : ItemBase(size, x, y) -{ - for (int i = 0; i < 8; ++i) { - m_vertices[i].setX(i & 1 ? 0.5f : -0.5f); - m_vertices[i].setY(i & 2 ? 0.5f : -0.5f); - m_vertices[i].setZ(i & 4 ? 0.5f : -0.5f); - } - for (int i = 0; i < 4; ++i) { - m_texCoords[i].setX(i & 1 ? 1.0f : 0.0f); - m_texCoords[i].setY(i & 2 ? 1.0f : 0.0f); - } - m_normals[0] = QVector3D(-1.0f, 0.0f, 0.0f); - m_normals[1] = QVector3D(1.0f, 0.0f, 0.0f); - m_normals[2] = QVector3D(0.0f, -1.0f, 0.0f); - m_normals[3] = QVector3D(0.0f, 1.0f, 0.0f); - m_normals[4] = QVector3D(0.0f, 0.0f, -1.0f); - m_normals[5] = QVector3D(0.0f, 0.0f, 1.0f); -} - -QtBox::~QtBox() -{ - delete m_texture; -} - -ItemBase *QtBox::createNew(int size, int x, int y) -{ - return new QtBox(size, x, y); -} - -void QtBox::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - QRectF rect = boundingRect().translated(pos()); - float width = float(painter->device()->width()); - float height = float(painter->device()->height()); - - float left = 2.0f * float(rect.left()) / width - 1.0f; - float right = 2.0f * float(rect.right()) / width - 1.0f; - float top = 1.0f - 2.0f * float(rect.top()) / height; - float bottom = 1.0f - 2.0f * float(rect.bottom()) / height; - float moveToRectMatrix[] = { - 0.5f * (right - left), 0.0f, 0.0f, 0.0f, - 0.0f, 0.5f * (bottom - top), 0.0f, 0.0f, - 0.0f, 0.0f, 1.0f, 0.0f, - 0.5f * (right + left), 0.5f * (bottom + top), 0.0f, 1.0f - }; - - painter->beginNativePainting(); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadMatrixf(moveToRectMatrix); - qgluPerspective(60.0, 1.0, 0.01, 10.0); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - //glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_NORMALIZE); - - if (m_texture == nullptr) - m_texture = new GLTexture2D(":/res/boxes/qt-logo.jpg", 64, 64); - m_texture->bind(); - glEnable(GL_TEXTURE_2D); - - glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); - float lightColour[] = {1.0f, 1.0f, 1.0f, 1.0f}; - float lightDir[] = {0.0f, 0.0f, 1.0f, 0.0f}; - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColour); - glLightfv(GL_LIGHT0, GL_POSITION, lightDir); - glEnable(GL_LIGHT0); - - glTranslatef(0.0f, 0.0f, -1.5f); - glRotatef(ROTATE_SPEED_X * m_startTime.msecsTo(QTime::currentTime()), 1.0f, 0.0f, 0.0f); - glRotatef(ROTATE_SPEED_Y * m_startTime.msecsTo(QTime::currentTime()), 0.0f, 1.0f, 0.0f); - glRotatef(ROTATE_SPEED_Z * m_startTime.msecsTo(QTime::currentTime()), 0.0f, 0.0f, 1.0f); - int dt = m_startTime.msecsTo(QTime::currentTime()); - if (dt < 500) - glScalef(dt / 500.0f, dt / 500.0f, dt / 500.0f); - - for (int dir = 0; dir < 3; ++dir) { - glColor4f(1.0f, 1.0f, 1.0f, 1.0); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(reinterpret_cast<float *>(&m_normals[2 * dir + 0])); - for (int i = 0; i < 2; ++i) { - for (int j = 0; j < 2; ++j) { - glTexCoord2fv(reinterpret_cast<float *>(&m_texCoords[(j << 1) | i])); - glVertex3fv(reinterpret_cast<float *>(&m_vertices[(i << ((dir + 2) % 3)) | (j << ((dir + 1) % 3))])); - } - } - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(reinterpret_cast<float *>(&m_normals[2 * dir + 1])); - for (int i = 0; i < 2; ++i) { - for (int j = 0; j < 2; ++j) { - glTexCoord2fv(reinterpret_cast<float *>(&m_texCoords[(j << 1) | i])); - glVertex3fv(reinterpret_cast<float *>(&m_vertices[(1 << dir) | (i << ((dir + 1) % 3)) | (j << ((dir + 2) % 3))])); - } - } - glEnd(); - } - m_texture->unbind(); - - //glDisable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - glDisable(GL_LIGHTING); - glDisable(GL_COLOR_MATERIAL); - glDisable(GL_TEXTURE_2D); - glDisable(GL_LIGHT0); - glDisable(GL_NORMALIZE); - - glPopMatrix(); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - painter->endNativePainting(); - - ItemBase::paint(painter, option, widget); -} - -//============================================================================// -// CircleItem // -//============================================================================// - -CircleItem::CircleItem(int size, int x, int y) : ItemBase(size, x, y) - , m_color(QColor::fromHsv(QRandomGenerator::global()->bounded(360), 255, 255)) -{} - -void CircleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - int dt = m_startTime.msecsTo(QTime::currentTime()); - - qreal r0 = 0.5 * m_size * (1.0 - qExp(-0.001 * ((dt + 3800) % 4000))); - qreal r1 = 0.5 * m_size * (1.0 - qExp(-0.001 * ((dt + 0) % 4000))); - qreal r2 = 0.5 * m_size * (1.0 - qExp(-0.001 * ((dt + 1800) % 4000))); - qreal r3 = 0.5 * m_size * (1.0 - qExp(-0.001 * ((dt + 2000) % 4000))); - - if (r0 > r1) - r0 = 0.0; - if (r2 > r3) - r2 = 0.0; - - QPainterPath path; - path.moveTo(r1, 0.0); - path.arcTo(-r1, -r1, 2 * r1, 2 * r1, 0.0, 360.0); - path.lineTo(r0, 0.0); - path.arcTo(-r0, -r0, 2 * r0, 2 * r0, 0.0, -360.0); - path.closeSubpath(); - path.moveTo(r3, 0.0); - path.arcTo(-r3, -r3, 2 * r3, 2 * r3, 0.0, 360.0); - path.lineTo(r0, 0.0); - path.arcTo(-r2, -r2, 2 * r2, 2 * r2, 0.0, -360.0); - path.closeSubpath(); - painter->setRenderHint(QPainter::Antialiasing, true); - painter->setBrush(QBrush(m_color)); - painter->setPen(Qt::NoPen); - painter->drawPath(path); - painter->setBrush(Qt::NoBrush); - painter->setPen(Qt::SolidLine); - painter->setRenderHint(QPainter::Antialiasing, false); - - ItemBase::paint(painter, option, widget); -} - -ItemBase *CircleItem::createNew(int size, int x, int y) -{ - return new CircleItem(size, x, y); -} - -//============================================================================// -// SquareItem // -//============================================================================// - -SquareItem::SquareItem(int size, int x, int y) : ItemBase(size, x, y) - , m_image(QPixmap(":/res/boxes/square.jpg")) -{} - -void SquareItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - int dt = m_startTime.msecsTo(QTime::currentTime()); - QTransform oldTransform = painter->worldTransform(); - int dtMod = dt % 2000; - qreal amp = 0.002 * (dtMod < 1000 ? dtMod : 2000 - dtMod) - 1.0; - - qreal scale = 0.6 + 0.2 * amp * amp; - painter->setWorldTransform(QTransform().rotate(15.0 * amp).scale(scale, scale), true); - - painter->drawPixmap(-m_size / 2, -m_size / 2, m_size, m_size, m_image); - - painter->setWorldTransform(oldTransform, false); - ItemBase::paint(painter, option, widget); -} - -ItemBase *SquareItem::createNew(int size, int x, int y) -{ - return new SquareItem(size, x, y); -} diff --git a/examples/widgets/graphicsview/boxes/qtbox.h b/examples/widgets/graphicsview/boxes/qtbox.h deleted file mode 100644 index 84c8cb1d93..0000000000 --- a/examples/widgets/graphicsview/boxes/qtbox.h +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTBOX_H -#define QTBOX_H - -#include "glbuffers.h" - -#include <QtWidgets> -#include <QVector3D> - -class ItemBase : public QGraphicsItem -{ -public: - enum { Type = UserType + 1 }; - - ItemBase(int size, int x, int y); - QRectF boundingRect() const override; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; -protected: - virtual ItemBase *createNew(int size, int x, int y) = 0; - void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override; - void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; - void hoverMoveEvent(QGraphicsSceneHoverEvent *event) override; - void mousePressEvent(QGraphicsSceneMouseEvent *event) override; - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - void wheelEvent(QGraphicsSceneWheelEvent *event) override; - int type() const override; - bool isInResizeArea(const QPointF &pos); - - static void duplicateSelectedItems(QGraphicsScene *scene); - static void deleteSelectedItems(QGraphicsScene *scene); - static void growSelectedItems(QGraphicsScene *scene); - static void shrinkSelectedItems(QGraphicsScene *scene); - - int m_size; - QTime m_startTime; - bool m_isResizing = false; -}; - -class QtBox : public ItemBase -{ -public: - QtBox(int size, int x, int y); - virtual ~QtBox(); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; -protected: - ItemBase *createNew(int size, int x, int y) override; -private: - QVector3D m_vertices[8]; - QVector3D m_texCoords[4]; - QVector3D m_normals[6]; - GLTexture *m_texture = nullptr; -}; - -class CircleItem : public ItemBase -{ -public: - CircleItem(int size, int x, int y); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; -protected: - ItemBase *createNew(int size, int x, int y) override; - - QColor m_color; -}; - -class SquareItem : public ItemBase -{ -public: - SquareItem(int size, int x, int y); - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; -protected: - ItemBase *createNew(int size, int x, int y) override; - - QPixmap m_image; -}; - -#endif diff --git a/examples/widgets/graphicsview/boxes/reflection.fsh b/examples/widgets/graphicsview/boxes/reflection.fsh deleted file mode 100644 index 0f0a26476f..0000000000 --- a/examples/widgets/graphicsview/boxes/reflection.fsh +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; -uniform samplerCube env; -uniform mat4 view; - -void main() -{ - vec3 N = normalize(normal); - vec3 R = 2.0 * dot(-position, N) * N + position; - gl_FragColor = textureCube(env, R * mat3(view[0].xyz, view[1].xyz, view[2].xyz)); -} diff --git a/examples/widgets/graphicsview/boxes/refraction.fsh b/examples/widgets/graphicsview/boxes/refraction.fsh deleted file mode 100644 index 8ba2d36329..0000000000 --- a/examples/widgets/graphicsview/boxes/refraction.fsh +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; -uniform samplerCube env; -uniform mat4 view; - -// Arrays don't work here on glsl < 120, apparently. -//const float coeffs[6] = float[6](1.0/2.0, 1.0/2.1, 1.0/2.2, 1.0/2.3, 1.0/2.4, 1.0/2.5); -float coeffs(int i) -{ - return 1.0 / (2.0 + 0.1 * float(i)); -} - -void main() -{ - vec3 N = normalize(normal); - vec3 I = -normalize(position); - float IdotN = dot(I, N); - float scales[6]; - vec3 C[6]; - for (int i = 0; i < 6; ++i) { - scales[i] = (IdotN - sqrt(1.0 - coeffs(i) + coeffs(i) * (IdotN * IdotN))); - C[i] = textureCube(env, (-I + coeffs(i) * N) * mat3(view[0].xyz, view[1].xyz, view[2].xyz)).xyz; - } - - gl_FragColor = 0.25 * vec4(C[5].x + 2.0*C[0].x + C[1].x, C[1].y + 2.0*C[2].y + C[3].y, - C[3].z + 2.0*C[4].z + C[5].z, 4.0); -} diff --git a/examples/widgets/graphicsview/boxes/roundedbox.cpp b/examples/widgets/graphicsview/boxes/roundedbox.cpp deleted file mode 100644 index be96223b9f..0000000000 --- a/examples/widgets/graphicsview/boxes/roundedbox.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "roundedbox.h" - -//============================================================================// -// P3T2N3Vertex // -//============================================================================// - -VertexDescription P3T2N3Vertex::description[] = { - {VertexDescription::Position, GL_FLOAT, SIZE_OF_MEMBER(P3T2N3Vertex, position) / sizeof(float), 0, 0}, - {VertexDescription::TexCoord, GL_FLOAT, SIZE_OF_MEMBER(P3T2N3Vertex, texCoord) / sizeof(float), sizeof(QVector3D), 0}, - {VertexDescription::Normal, GL_FLOAT, SIZE_OF_MEMBER(P3T2N3Vertex, normal) / sizeof(float), sizeof(QVector3D) + sizeof(QVector2D), 0}, - - {VertexDescription::Null, 0, 0, 0, 0}, -}; - -//============================================================================// -// GLRoundedBox // -//============================================================================// - -float lerp(float a, float b, float t) -{ - return a * (1.0f - t) + b * t; -} - -GLRoundedBox::GLRoundedBox(float r, float scale, int n) - : GLTriangleMesh<P3T2N3Vertex, unsigned short>((n+2)*(n+3)*4, (n+1)*(n+1)*24+36+72*(n+1)) -{ - int vidx = 0, iidx = 0; - int vertexCountPerCorner = (n + 2) * (n + 3) / 2; - - P3T2N3Vertex *vp = m_vb.lock(); - unsigned short *ip = m_ib.lock(); - - if (!vp || !ip) { - qWarning("GLRoundedBox::GLRoundedBox: Failed to lock vertex buffer and/or index buffer."); - m_ib.unlock(); - m_vb.unlock(); - return; - } - - for (int corner = 0; corner < 8; ++corner) { - QVector3D centre(corner & 1 ? 1.0f : -1.0f, - corner & 2 ? 1.0f : -1.0f, - corner & 4 ? 1.0f : -1.0f); - int winding = (corner & 1) ^ ((corner >> 1) & 1) ^ (corner >> 2); - int offsX = ((corner ^ 1) - corner) * vertexCountPerCorner; - int offsY = ((corner ^ 2) - corner) * vertexCountPerCorner; - int offsZ = ((corner ^ 4) - corner) * vertexCountPerCorner; - - // Face polygons - if (winding) { - ip[iidx++] = vidx; - ip[iidx++] = vidx + offsX; - ip[iidx++] = vidx + offsY; - - ip[iidx++] = vidx + vertexCountPerCorner - n - 2; - ip[iidx++] = vidx + vertexCountPerCorner - n - 2 + offsY; - ip[iidx++] = vidx + vertexCountPerCorner - n - 2 + offsZ; - - ip[iidx++] = vidx + vertexCountPerCorner - 1; - ip[iidx++] = vidx + vertexCountPerCorner - 1 + offsZ; - ip[iidx++] = vidx + vertexCountPerCorner - 1 + offsX; - } - - for (int i = 0; i < n + 2; ++i) { - - // Edge polygons - if (winding && i < n + 1) { - ip[iidx++] = vidx + i + 1; - ip[iidx++] = vidx; - ip[iidx++] = vidx + offsY + i + 1; - ip[iidx++] = vidx + offsY; - ip[iidx++] = vidx + offsY + i + 1; - ip[iidx++] = vidx; - - ip[iidx++] = vidx + i; - ip[iidx++] = vidx + 2 * i + 2; - ip[iidx++] = vidx + i + offsX; - ip[iidx++] = vidx + 2 * i + offsX + 2; - ip[iidx++] = vidx + i + offsX; - ip[iidx++] = vidx + 2 * i + 2; - - ip[iidx++] = (corner + 1) * vertexCountPerCorner - 1 - i; - ip[iidx++] = (corner + 1) * vertexCountPerCorner - 2 - i; - ip[iidx++] = (corner + 1) * vertexCountPerCorner - 1 - i + offsZ; - ip[iidx++] = (corner + 1) * vertexCountPerCorner - 2 - i + offsZ; - ip[iidx++] = (corner + 1) * vertexCountPerCorner - 1 - i + offsZ; - ip[iidx++] = (corner + 1) * vertexCountPerCorner - 2 - i; - } - - for (int j = 0; j <= i; ++j) { - QVector3D normal = QVector3D(i - j, j, n + 1 - i).normalized(); - QVector3D offset(0.5f - r, 0.5f - r, 0.5f - r); - QVector3D pos = centre * (offset + r * normal); - - vp[vidx].position = scale * pos; - vp[vidx].normal = centre * normal; - vp[vidx].texCoord = QVector2D(pos.x() + 0.5f, pos.y() + 0.5f); - - // Corner polygons - if (i < n + 1) { - ip[iidx++] = vidx; - ip[iidx++] = vidx + i + 2 - winding; - ip[iidx++] = vidx + i + 1 + winding; - } - if (i < n) { - ip[iidx++] = vidx + i + 1 + winding; - ip[iidx++] = vidx + i + 2 - winding; - ip[iidx++] = vidx + 2 * i + 4; - } - - ++vidx; - } - } - - } - - m_ib.unlock(); - m_vb.unlock(); -} - diff --git a/examples/widgets/graphicsview/boxes/scene.cpp b/examples/widgets/graphicsview/boxes/scene.cpp deleted file mode 100644 index b344f65561..0000000000 --- a/examples/widgets/graphicsview/boxes/scene.cpp +++ /dev/null @@ -1,1028 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "scene.h" - -#include <QMatrix4x4> -#include <QRandomGenerator> -#include <QVector3D> -#include <qmath.h> - -#include "3rdparty/fbm.h" - -//============================================================================// -// ColorEdit // -//============================================================================// - -ColorEdit::ColorEdit(QRgb initialColor, int id) - : m_color(initialColor), m_id(id) -{ - QHBoxLayout *layout = new QHBoxLayout; - setLayout(layout); - layout->setContentsMargins(0, 0, 0, 0); - - m_lineEdit = new QLineEdit(QString::number(m_color, 16)); - layout->addWidget(m_lineEdit); - - m_button = new QFrame; - QPalette palette = m_button->palette(); - palette.setColor(QPalette::Window, QColor(m_color)); - m_button->setPalette(palette); - m_button->setAutoFillBackground(true); - m_button->setMinimumSize(32, 0); - m_button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); - m_button->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); - layout->addWidget(m_button); - - connect(m_lineEdit, &QLineEdit::editingFinished, this, &ColorEdit::editDone); -} - -void ColorEdit::editDone() -{ - bool ok; - QRgb newColor = m_lineEdit->text().toUInt(&ok, 16); - if (ok) - setColor(newColor); -} - -void ColorEdit::mousePressEvent(QMouseEvent *event) -{ - if (event->button() == Qt::LeftButton) { - QColor color(m_color); - QColorDialog dialog(color, nullptr); - dialog.setOption(QColorDialog::ShowAlphaChannel, true); - dialog.move(280, 120); - if (dialog.exec() == QDialog::Rejected) - return; - QRgb newColor = dialog.selectedColor().rgba(); - if (newColor == m_color) - return; - setColor(newColor); - } -} - -void ColorEdit::setColor(QRgb color) -{ - m_color = color; - m_lineEdit->setText(QString::number(m_color, 16)); // "Clean up" text - QPalette palette = m_button->palette(); - palette.setColor(QPalette::Window, QColor(m_color)); - m_button->setPalette(palette); - emit colorChanged(m_color, m_id); -} - -//============================================================================// -// FloatEdit // -//============================================================================// - -FloatEdit::FloatEdit(float initialValue, int id) - : m_value(initialValue), m_id(id) -{ - QHBoxLayout *layout = new QHBoxLayout; - setLayout(layout); - layout->setContentsMargins(0, 0, 0, 0); - - m_lineEdit = new QLineEdit(QString::number(m_value)); - layout->addWidget(m_lineEdit); - - connect(m_lineEdit, &QLineEdit::editingFinished, this, &FloatEdit::editDone); -} - -void FloatEdit::editDone() -{ - bool ok; - float newValue = m_lineEdit->text().toFloat(&ok); - if (ok) { - m_value = newValue; - m_lineEdit->setText(QString::number(m_value)); // "Clean up" text - emit valueChanged(m_value, m_id); - } -} - -//============================================================================// -// TwoSidedGraphicsWidget // -//============================================================================// -void TwoSidedGraphicsWidget::setWidget(int index, QWidget *widget) -{ - if (index < 0 || index >= 2) - { - qWarning("TwoSidedGraphicsWidget::setWidget: Index out of bounds, index == %d", index); - return; - } - - GraphicsWidget *proxy = new GraphicsWidget; - proxy->setWidget(widget); - - delete m_proxyWidgets[index]; - m_proxyWidgets[index] = proxy; - - proxy->setCacheMode(QGraphicsItem::ItemCoordinateCache); - proxy->setZValue(1e30); // Make sure the dialog is drawn on top of all other (OpenGL) items - - if (index != m_current) - proxy->setVisible(false); - - qobject_cast<QGraphicsScene *>(parent())->addItem(proxy); -} - -QWidget *TwoSidedGraphicsWidget::widget(int index) -{ - if (index < 0 || index >= 2) - { - qWarning("TwoSidedGraphicsWidget::widget: Index out of bounds, index == %d", index); - return nullptr; - } - return m_proxyWidgets[index]->widget(); -} - -void TwoSidedGraphicsWidget::flip() -{ - m_delta = (m_current == 0 ? 9 : -9); - animateFlip(); -} - -void TwoSidedGraphicsWidget::animateFlip() -{ - m_angle += m_delta; - if (m_angle == 90) { - int old = m_current; - m_current ^= 1; - m_proxyWidgets[old]->setVisible(false); - m_proxyWidgets[m_current]->setVisible(true); - m_proxyWidgets[m_current]->setGeometry(m_proxyWidgets[old]->geometry()); - } - - QRectF r = m_proxyWidgets[m_current]->boundingRect(); - m_proxyWidgets[m_current]->setTransform(QTransform() - .translate(r.width() / 2, r.height() / 2) - .rotate(m_angle - 180 * m_current, Qt::YAxis) - .translate(-r.width() / 2, -r.height() / 2)); - - if ((m_current == 0 && m_angle > 0) || (m_current == 1 && m_angle < 180)) - QTimer::singleShot(25, this, &TwoSidedGraphicsWidget::animateFlip); -} - -QVariant GraphicsWidget::itemChange(GraphicsItemChange change, const QVariant &value) -{ - if (change == ItemPositionChange && scene()) { - QRectF rect = boundingRect(); - QPointF pos = value.toPointF(); - QRectF sceneRect = scene()->sceneRect(); - if (pos.x() + rect.left() < sceneRect.left()) - pos.setX(sceneRect.left() - rect.left()); - else if (pos.x() + rect.right() >= sceneRect.right()) - pos.setX(sceneRect.right() - rect.right()); - if (pos.y() + rect.top() < sceneRect.top()) - pos.setY(sceneRect.top() - rect.top()); - else if (pos.y() + rect.bottom() >= sceneRect.bottom()) - pos.setY(sceneRect.bottom() - rect.bottom()); - return pos; - } - return QGraphicsProxyWidget::itemChange(change, value); -} - -void GraphicsWidget::resizeEvent(QGraphicsSceneResizeEvent *event) -{ - setCacheMode(QGraphicsItem::NoCache); - setCacheMode(QGraphicsItem::ItemCoordinateCache); - QGraphicsProxyWidget::resizeEvent(event); -} - -void GraphicsWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - painter->setRenderHint(QPainter::Antialiasing, false); - QGraphicsProxyWidget::paint(painter, option, widget); - //painter->setRenderHint(QPainter::Antialiasing, true); -} - -//============================================================================// -// RenderOptionsDialog // -//============================================================================// - -RenderOptionsDialog::RenderOptionsDialog() - : QDialog(nullptr, Qt::CustomizeWindowHint | Qt::WindowTitleHint) -{ - setWindowOpacity(0.75); - setWindowTitle(tr("Options (double click to flip)")); - QGridLayout *layout = new QGridLayout; - setLayout(layout); - layout->setColumnStretch(1, 1); - - int row = 0; - - QCheckBox *check = new QCheckBox(tr("Dynamic cube map")); - check->setCheckState(Qt::Unchecked); - // Dynamic cube maps are only enabled when multi-texturing and render to texture are available. - check->setEnabled(glActiveTexture && glGenFramebuffersEXT); - connect(check, &QCheckBox::stateChanged, this, &RenderOptionsDialog::dynamicCubemapToggled); - layout->addWidget(check, 0, 0, 1, 2); - ++row; - - // Load all .par files - // .par files have a simple syntax for specifying user adjustable uniform variables. - const QList<QFileInfo> files = QDir(QStringLiteral(":/res/boxes/")) - .entryInfoList({ QStringLiteral("*.par") }, - QDir::Files | QDir::Readable); - - for (const QFileInfo &fileInfo : files) { - QFile file(fileInfo.absoluteFilePath()); - if (file.open(QIODevice::ReadOnly)) { - while (!file.atEnd()) { - QList<QByteArray> tokens = file.readLine().simplified().split(' '); - QList<QByteArray>::const_iterator it = tokens.begin(); - if (it == tokens.end()) - continue; - QByteArray type = *it; - if (++it == tokens.end()) - continue; - QByteArray name = *it; - bool singleElement = (tokens.size() == 3); // type, name and one value - char counter[10] = "000000000"; - int counterPos = 8; // position of last digit - while (++it != tokens.end()) { - m_parameterNames << name; - if (!singleElement) { - m_parameterNames.back() += '['; - m_parameterNames.back() += counter + counterPos; - m_parameterNames.back() += ']'; - int j = 8; // position of last digit - ++counter[j]; - while (j > 0 && counter[j] > '9') { - counter[j] = '0'; - ++counter[--j]; - } - if (j < counterPos) - counterPos = j; - } - - if (type == "color") { - layout->addWidget(new QLabel(m_parameterNames.back())); - bool ok; - ColorEdit *colorEdit = new ColorEdit(it->toUInt(&ok, 16), m_parameterNames.size() - 1); - m_parameterEdits << colorEdit; - layout->addWidget(colorEdit); - connect(colorEdit, &ColorEdit::colorChanged, this, &RenderOptionsDialog::setColorParameter); - ++row; - } else if (type == "float") { - layout->addWidget(new QLabel(m_parameterNames.back())); - bool ok; - FloatEdit *floatEdit = new FloatEdit(it->toFloat(&ok), m_parameterNames.size() - 1); - m_parameterEdits << floatEdit; - layout->addWidget(floatEdit); - connect(floatEdit, &FloatEdit::valueChanged, this, &RenderOptionsDialog::setFloatParameter); - ++row; - } - } - } - file.close(); - } - } - - layout->addWidget(new QLabel(tr("Texture:"))); - m_textureCombo = new QComboBox; - connect(m_textureCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), - this, &RenderOptionsDialog::textureChanged); - layout->addWidget(m_textureCombo); - ++row; - - layout->addWidget(new QLabel(tr("Shader:"))); - m_shaderCombo = new QComboBox; - connect(m_shaderCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), - this, &RenderOptionsDialog::shaderChanged); - layout->addWidget(m_shaderCombo); - ++row; - - layout->setRowStretch(row, 1); -} - -int RenderOptionsDialog::addTexture(const QString &name) -{ - m_textureCombo->addItem(name); - return m_textureCombo->count() - 1; -} - -int RenderOptionsDialog::addShader(const QString &name) -{ - m_shaderCombo->addItem(name); - return m_shaderCombo->count() - 1; -} - -void RenderOptionsDialog::emitParameterChanged() -{ - for (ParameterEdit *edit : qAsConst(m_parameterEdits)) - edit->emitChange(); -} - -void RenderOptionsDialog::setColorParameter(QRgb color, int id) -{ - emit colorParameterChanged(m_parameterNames[id], color); -} - -void RenderOptionsDialog::setFloatParameter(float value, int id) -{ - emit floatParameterChanged(m_parameterNames[id], value); -} - -void RenderOptionsDialog::mouseDoubleClickEvent(QMouseEvent *event) -{ - if (event->button() == Qt::LeftButton) - emit doubleClicked(); -} - -//============================================================================// -// ItemDialog // -//============================================================================// - -ItemDialog::ItemDialog() - : QDialog(nullptr, Qt::CustomizeWindowHint | Qt::WindowTitleHint) -{ - setWindowTitle(tr("Items (double click to flip)")); - setWindowOpacity(0.75); - resize(160, 100); - - QVBoxLayout *layout = new QVBoxLayout; - setLayout(layout); - QPushButton *button; - - button = new QPushButton(tr("Add Qt box")); - layout->addWidget(button); - connect(button, &QAbstractButton::clicked, this, &ItemDialog::triggerNewQtBox); - - button = new QPushButton(tr("Add circle")); - layout->addWidget(button); - connect(button, &QAbstractButton::clicked, this, &ItemDialog::triggerNewCircleItem); - - button = new QPushButton(tr("Add square")); - layout->addWidget(button); - connect(button, &QAbstractButton::clicked, this, &ItemDialog::triggerNewSquareItem); - - layout->addStretch(1); -} - -void ItemDialog::triggerNewQtBox() -{ - emit newItemTriggered(QtBoxItem); -} - -void ItemDialog::triggerNewCircleItem() -{ - emit newItemTriggered(CircleItem); -} - -void ItemDialog::triggerNewSquareItem() -{ - emit newItemTriggered(SquareItem); -} - -void ItemDialog::mouseDoubleClickEvent(QMouseEvent *event) -{ - if (event->button() == Qt::LeftButton) - emit doubleClicked(); -} - -//============================================================================// -// Scene // -//============================================================================// - -const static char environmentShaderText[] = - "uniform samplerCube env;" - "void main() {" - "gl_FragColor = textureCube(env, gl_TexCoord[1].xyz);" - "}"; - -Scene::Scene(int width, int height, int maxTextureSize) - : m_distExp(600) - , m_frame(0) - , m_maxTextureSize(maxTextureSize) - , m_currentShader(0) - , m_currentTexture(0) - , m_dynamicCubemap(false) - , m_updateAllCubemaps(true) - , m_box(nullptr) - , m_vertexShader(nullptr) - , m_environmentShader(nullptr) - , m_environmentProgram(nullptr) -{ - setSceneRect(0, 0, width, height); - - m_trackBalls[0] = TrackBall(0.05f, QVector3D(0, 1, 0), TrackBall::Sphere); - m_trackBalls[1] = TrackBall(0.005f, QVector3D(0, 0, 1), TrackBall::Sphere); - m_trackBalls[2] = TrackBall(0.0f, QVector3D(0, 1, 0), TrackBall::Plane); - - m_renderOptions = new RenderOptionsDialog; - m_renderOptions->move(20, 120); - m_renderOptions->resize(m_renderOptions->sizeHint()); - - connect(m_renderOptions, &RenderOptionsDialog::dynamicCubemapToggled, this, &Scene::toggleDynamicCubemap); - connect(m_renderOptions, &RenderOptionsDialog::colorParameterChanged, this, &Scene::setColorParameter); - connect(m_renderOptions, &RenderOptionsDialog::floatParameterChanged, this, &Scene::setFloatParameter); - connect(m_renderOptions, &RenderOptionsDialog::textureChanged, this, &Scene::setTexture); - connect(m_renderOptions, &RenderOptionsDialog::shaderChanged, this, &Scene::setShader); - - m_itemDialog = new ItemDialog; - connect(m_itemDialog, &ItemDialog::newItemTriggered, this, &Scene::newItem); - - TwoSidedGraphicsWidget *twoSided = new TwoSidedGraphicsWidget(this); - twoSided->setWidget(0, m_renderOptions); - twoSided->setWidget(1, m_itemDialog); - - connect(m_renderOptions, &RenderOptionsDialog::doubleClicked, twoSided, &TwoSidedGraphicsWidget::flip); - connect(m_itemDialog, &ItemDialog::doubleClicked, twoSided, &TwoSidedGraphicsWidget::flip); - - addItem(new QtBox(64, width - 64, height - 64)); - addItem(new QtBox(64, width - 64, 64)); - addItem(new QtBox(64, 64, height - 64)); - addItem(new QtBox(64, 64, 64)); - - initGL(); - - m_timer = new QTimer(this); - m_timer->setInterval(20); - connect(m_timer, &QTimer::timeout, this, [this](){ update(); }); - m_timer->start(); -} - -Scene::~Scene() -{ - delete m_box; - qDeleteAll(m_textures); - delete m_mainCubemap; - qDeleteAll(m_programs); - delete m_vertexShader; - qDeleteAll(m_fragmentShaders); - qDeleteAll(m_cubemaps); - delete m_environmentShader; - delete m_environmentProgram; -} - -void Scene::initGL() -{ - m_box = new GLRoundedBox(0.25f, 1.0f, 10); - - m_vertexShader = new QGLShader(QGLShader::Vertex); - m_vertexShader->compileSourceFile(QLatin1String(":/res/boxes/basic.vsh")); - - QStringList list; - list << ":/res/boxes/cubemap_posx.jpg" << ":/res/boxes/cubemap_negx.jpg" << ":/res/boxes/cubemap_posy.jpg" - << ":/res/boxes/cubemap_negy.jpg" << ":/res/boxes/cubemap_posz.jpg" << ":/res/boxes/cubemap_negz.jpg"; - m_environment = new GLTextureCube(list, qMin(1024, m_maxTextureSize)); - m_environmentShader = new QGLShader(QGLShader::Fragment); - m_environmentShader->compileSourceCode(environmentShaderText); - m_environmentProgram = new QGLShaderProgram; - m_environmentProgram->addShader(m_vertexShader); - m_environmentProgram->addShader(m_environmentShader); - m_environmentProgram->link(); - - const int NOISE_SIZE = 128; // for a different size, B and BM in fbm.c must also be changed - m_noise = new GLTexture3D(NOISE_SIZE, NOISE_SIZE, NOISE_SIZE); - QVector<QRgb> data(NOISE_SIZE * NOISE_SIZE * NOISE_SIZE, QRgb(0)); - QRgb *p = data.data(); - float pos[3]; - for (int k = 0; k < NOISE_SIZE; ++k) { - pos[2] = k * (0x20 / (float)NOISE_SIZE); - for (int j = 0; j < NOISE_SIZE; ++j) { - for (int i = 0; i < NOISE_SIZE; ++i) { - for (int byte = 0; byte < 4; ++byte) { - pos[0] = (i + (byte & 1) * 16) * (0x20 / (float)NOISE_SIZE); - pos[1] = (j + (byte & 2) * 8) * (0x20 / (float)NOISE_SIZE); - *p |= (int)(128.0f * (noise3(pos) + 1.0f)) << (byte * 8); - } - ++p; - } - } - } - m_noise->load(NOISE_SIZE, NOISE_SIZE, NOISE_SIZE, data.data()); - - m_mainCubemap = new GLRenderTargetCube(512); - - QList<QFileInfo> files; - - // Load all .png files as textures - m_currentTexture = 0; - files = QDir(":/res/boxes/").entryInfoList({ QStringLiteral("*.png") }, QDir::Files | QDir::Readable); - - for (const QFileInfo &file : qAsConst(files)) { - GLTexture *texture = new GLTexture2D(file.absoluteFilePath(), qMin(256, m_maxTextureSize), qMin(256, m_maxTextureSize)); - if (texture->failed()) { - delete texture; - continue; - } - m_textures << texture; - m_renderOptions->addTexture(file.baseName()); - } - - if (m_textures.size() == 0) - m_textures << new GLTexture2D(qMin(64, m_maxTextureSize), qMin(64, m_maxTextureSize)); - - // Load all .fsh files as fragment shaders - m_currentShader = 0; - files = QDir(":/res/boxes/").entryInfoList({ QStringLiteral("*.fsh") }, QDir::Files | QDir::Readable); - for (const QFileInfo &file : qAsConst(files)) { - QGLShaderProgram *program = new QGLShaderProgram; - QGLShader* shader = new QGLShader(QGLShader::Fragment); - shader->compileSourceFile(file.absoluteFilePath()); - // The program does not take ownership over the shaders, so store them in a vector so they can be deleted afterwards. - program->addShader(m_vertexShader); - program->addShader(shader); - if (!program->link()) { - qWarning("Failed to compile and link shader program"); - qWarning("Vertex shader log:"); - qWarning() << m_vertexShader->log(); - qWarning() << "Fragment shader log ( file =" << file.absoluteFilePath() << "):"; - qWarning() << shader->log(); - qWarning("Shader program log:"); - qWarning() << program->log(); - - delete shader; - delete program; - continue; - } - - m_fragmentShaders << shader; - m_programs << program; - m_renderOptions->addShader(file.baseName()); - - program->bind(); - m_cubemaps << ((program->uniformLocation("env") != -1) ? new GLRenderTargetCube(qMin(256, m_maxTextureSize)) : nullptr); - program->release(); - } - - if (m_programs.size() == 0) - m_programs << new QGLShaderProgram; - - m_renderOptions->emitParameterChanged(); -} - -static void loadMatrix(const QMatrix4x4 &m) -{ - // static to prevent glLoadMatrixf to fail on certain drivers - static GLfloat mat[16]; - const float *data = m.constData(); - for (int index = 0; index < 16; ++index) - mat[index] = data[index]; - glLoadMatrixf(mat); -} - -// If one of the boxes should not be rendered, set excludeBox to its index. -// If the main box should not be rendered, set excludeBox to -1. -void Scene::renderBoxes(const QMatrix4x4 &view, int excludeBox) -{ - QMatrix4x4 invView = view.inverted(); - - // If multi-texturing is supported, use three saplers. - if (glActiveTexture) { - glActiveTexture(GL_TEXTURE0); - m_textures[m_currentTexture]->bind(); - glActiveTexture(GL_TEXTURE2); - m_noise->bind(); - glActiveTexture(GL_TEXTURE1); - } else { - m_textures[m_currentTexture]->bind(); - } - - glDisable(GL_LIGHTING); - glDisable(GL_CULL_FACE); - - QMatrix4x4 viewRotation(view); - viewRotation(3, 0) = viewRotation(3, 1) = viewRotation(3, 2) = 0.0f; - viewRotation(0, 3) = viewRotation(1, 3) = viewRotation(2, 3) = 0.0f; - viewRotation(3, 3) = 1.0f; - loadMatrix(viewRotation); - glScalef(20.0f, 20.0f, 20.0f); - - // Don't render the environment if the environment texture can't be set for the correct sampler. - if (glActiveTexture) { - m_environment->bind(); - m_environmentProgram->bind(); - m_environmentProgram->setUniformValue("tex", GLint(0)); - m_environmentProgram->setUniformValue("env", GLint(1)); - m_environmentProgram->setUniformValue("noise", GLint(2)); - m_box->draw(); - m_environmentProgram->release(); - m_environment->unbind(); - } - - loadMatrix(view); - - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - - for (int i = 0; i < m_programs.size(); ++i) { - if (i == excludeBox) - continue; - - glPushMatrix(); - QMatrix4x4 m; - m.rotate(m_trackBalls[1].rotation()); - glMultMatrixf(m.constData()); - - glRotatef(360.0f * i / m_programs.size(), 0.0f, 0.0f, 1.0f); - glTranslatef(2.0f, 0.0f, 0.0f); - glScalef(0.3f, 0.6f, 0.6f); - - if (glActiveTexture) { - if (m_dynamicCubemap && m_cubemaps[i]) - m_cubemaps[i]->bind(); - else - m_environment->bind(); - } - m_programs[i]->bind(); - m_programs[i]->setUniformValue("tex", GLint(0)); - m_programs[i]->setUniformValue("env", GLint(1)); - m_programs[i]->setUniformValue("noise", GLint(2)); - m_programs[i]->setUniformValue("view", view); - m_programs[i]->setUniformValue("invView", invView); - m_box->draw(); - m_programs[i]->release(); - - if (glActiveTexture) { - if (m_dynamicCubemap && m_cubemaps[i]) - m_cubemaps[i]->unbind(); - else - m_environment->unbind(); - } - glPopMatrix(); - } - - if (-1 != excludeBox) { - QMatrix4x4 m; - m.rotate(m_trackBalls[0].rotation()); - glMultMatrixf(m.constData()); - - if (glActiveTexture) { - if (m_dynamicCubemap) - m_mainCubemap->bind(); - else - m_environment->bind(); - } - - m_programs[m_currentShader]->bind(); - m_programs[m_currentShader]->setUniformValue("tex", GLint(0)); - m_programs[m_currentShader]->setUniformValue("env", GLint(1)); - m_programs[m_currentShader]->setUniformValue("noise", GLint(2)); - m_programs[m_currentShader]->setUniformValue("view", view); - m_programs[m_currentShader]->setUniformValue("invView", invView); - m_box->draw(); - m_programs[m_currentShader]->release(); - - if (glActiveTexture) { - if (m_dynamicCubemap) - m_mainCubemap->unbind(); - else - m_environment->unbind(); - } - } - - if (glActiveTexture) { - glActiveTexture(GL_TEXTURE2); - m_noise->unbind(); - glActiveTexture(GL_TEXTURE0); - } - m_textures[m_currentTexture]->unbind(); -} - -void Scene::setStates() -{ - //glClearColor(0.25f, 0.25f, 0.5f, 1.0f); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - //glEnable(GL_COLOR_MATERIAL); - glEnable(GL_TEXTURE_2D); - glEnable(GL_NORMALIZE); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - setLights(); - - float materialSpecular[] = {0.5f, 0.5f, 0.5f, 1.0f}; - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, materialSpecular); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 32.0f); -} - -void Scene::setLights() -{ - glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); - //float lightColour[] = {1.0f, 1.0f, 1.0f, 1.0f}; - float lightDir[] = {0.0f, 0.0f, 1.0f, 0.0f}; - //glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColour); - //glLightfv(GL_LIGHT0, GL_SPECULAR, lightColour); - glLightfv(GL_LIGHT0, GL_POSITION, lightDir); - glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, 1.0f); - glEnable(GL_LIGHT0); -} - -void Scene::defaultStates() -{ - //glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - glDisable(GL_LIGHTING); - //glDisable(GL_COLOR_MATERIAL); - glDisable(GL_TEXTURE_2D); - glDisable(GL_LIGHT0); - glDisable(GL_NORMALIZE); - - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, 0.0f); - float defaultMaterialSpecular[] = {0.0f, 0.0f, 0.0f, 1.0f}; - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, defaultMaterialSpecular); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0f); -} - -void Scene::renderCubemaps() -{ - // To speed things up, only update the cubemaps for the small cubes every N frames. - const int N = (m_updateAllCubemaps ? 1 : 3); - - QMatrix4x4 mat; - GLRenderTargetCube::getProjectionMatrix(mat, 0.1f, 100.0f); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - loadMatrix(mat); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - QVector3D center; - - const float eachAngle = 2 * M_PI / m_cubemaps.size(); - for (int i = m_frame % N; i < m_cubemaps.size(); i += N) { - if (0 == m_cubemaps[i]) - continue; - - float angle = i * eachAngle; - - center = m_trackBalls[1].rotation().rotatedVector(QVector3D(std::cos(angle), std::sin(angle), 0.0f)); - - for (int face = 0; face < 6; ++face) { - m_cubemaps[i]->begin(face); - - GLRenderTargetCube::getViewMatrix(mat, face); - QVector4D v = QVector4D(-center.x(), -center.y(), -center.z(), 1.0); - mat.setColumn(3, mat * v); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - renderBoxes(mat, i); - - m_cubemaps[i]->end(); - } - } - - for (int face = 0; face < 6; ++face) { - m_mainCubemap->begin(face); - GLRenderTargetCube::getViewMatrix(mat, face); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - renderBoxes(mat, -1); - - m_mainCubemap->end(); - } - - glPopMatrix(); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - m_updateAllCubemaps = false; -} - -void Scene::drawBackground(QPainter *painter, const QRectF &) -{ - float width = float(painter->device()->width()); - float height = float(painter->device()->height()); - - painter->beginNativePainting(); - setStates(); - - if (m_dynamicCubemap) - renderCubemaps(); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - qgluPerspective(60.0, width / height, 0.01, 15.0); - - glMatrixMode(GL_MODELVIEW); - - QMatrix4x4 view; - view.rotate(m_trackBalls[2].rotation()); - view(2, 3) -= 2.0f * std::exp(m_distExp / 1200.0f); - renderBoxes(view); - - defaultStates(); - ++m_frame; - - painter->endNativePainting(); -} - -QPointF Scene::pixelPosToViewPos(const QPointF& p) -{ - return QPointF(2.0 * float(p.x()) / width() - 1.0, - 1.0 - 2.0 * float(p.y()) / height()); -} - -void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - QGraphicsScene::mouseMoveEvent(event); - if (event->isAccepted()) - return; - - if (event->buttons() & Qt::LeftButton) { - m_trackBalls[0].move(pixelPosToViewPos(event->scenePos()), m_trackBalls[2].rotation().conjugated()); - event->accept(); - } else { - m_trackBalls[0].release(pixelPosToViewPos(event->scenePos()), m_trackBalls[2].rotation().conjugated()); - } - - if (event->buttons() & Qt::RightButton) { - m_trackBalls[1].move(pixelPosToViewPos(event->scenePos()), m_trackBalls[2].rotation().conjugated()); - event->accept(); - } else { - m_trackBalls[1].release(pixelPosToViewPos(event->scenePos()), m_trackBalls[2].rotation().conjugated()); - } - - if (event->buttons() & Qt::MidButton) { - m_trackBalls[2].move(pixelPosToViewPos(event->scenePos()), QQuaternion()); - event->accept(); - } else { - m_trackBalls[2].release(pixelPosToViewPos(event->scenePos()), QQuaternion()); - } -} - -void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - QGraphicsScene::mousePressEvent(event); - if (event->isAccepted()) - return; - - if (event->buttons() & Qt::LeftButton) { - m_trackBalls[0].push(pixelPosToViewPos(event->scenePos()), m_trackBalls[2].rotation().conjugated()); - event->accept(); - } - - if (event->buttons() & Qt::RightButton) { - m_trackBalls[1].push(pixelPosToViewPos(event->scenePos()), m_trackBalls[2].rotation().conjugated()); - event->accept(); - } - - if (event->buttons() & Qt::MidButton) { - m_trackBalls[2].push(pixelPosToViewPos(event->scenePos()), QQuaternion()); - event->accept(); - } -} - -void Scene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - QGraphicsScene::mouseReleaseEvent(event); - if (event->isAccepted()) - return; - - if (event->button() == Qt::LeftButton) { - m_trackBalls[0].release(pixelPosToViewPos(event->scenePos()), m_trackBalls[2].rotation().conjugated()); - event->accept(); - } - - if (event->button() == Qt::RightButton) { - m_trackBalls[1].release(pixelPosToViewPos(event->scenePos()), m_trackBalls[2].rotation().conjugated()); - event->accept(); - } - - if (event->button() == Qt::MidButton) { - m_trackBalls[2].release(pixelPosToViewPos(event->scenePos()), QQuaternion()); - event->accept(); - } -} - -void Scene::wheelEvent(QGraphicsSceneWheelEvent * event) -{ - QGraphicsScene::wheelEvent(event); - if (!event->isAccepted()) { - m_distExp += event->delta(); - if (m_distExp < -8 * 120) - m_distExp = -8 * 120; - if (m_distExp > 10 * 120) - m_distExp = 10 * 120; - event->accept(); - } -} - -void Scene::setShader(int index) -{ - if (index >= 0 && index < m_fragmentShaders.size()) - m_currentShader = index; -} - -void Scene::setTexture(int index) -{ - if (index >= 0 && index < m_textures.size()) - m_currentTexture = index; -} - -void Scene::toggleDynamicCubemap(int state) -{ - if ((m_dynamicCubemap = (state == Qt::Checked))) - m_updateAllCubemaps = true; -} - -void Scene::setColorParameter(const QString &name, QRgb color) -{ - // set the color in all programs - for (QGLShaderProgram *program : qAsConst(m_programs)) { - program->bind(); - program->setUniformValue(program->uniformLocation(name), QColor(color)); - program->release(); - } -} - -void Scene::setFloatParameter(const QString &name, float value) -{ - // set the color in all programs - for (QGLShaderProgram *program : qAsConst(m_programs)) { - program->bind(); - program->setUniformValue(program->uniformLocation(name), value); - program->release(); - } -} - -void Scene::newItem(ItemDialog::ItemType type) -{ - QSize size = sceneRect().size().toSize(); - switch (type) { - case ItemDialog::QtBoxItem: - addItem(new QtBox(64, QRandomGenerator::global()->bounded(size.width() - 64) + 32, - QRandomGenerator::global()->bounded(size.height() - 64) + 32)); - break; - case ItemDialog::CircleItem: - addItem(new CircleItem(64, QRandomGenerator::global()->bounded(size.width() - 64) + 32, - QRandomGenerator::global()->bounded(size.height() - 64) + 32)); - break; - case ItemDialog::SquareItem: - addItem(new SquareItem(64, QRandomGenerator::global()->bounded(size.width() - 64) + 32, - QRandomGenerator::global()->bounded(size.height() - 64) + 32)); - break; - default: - break; - } -} diff --git a/examples/widgets/graphicsview/boxes/scene.h b/examples/widgets/graphicsview/boxes/scene.h deleted file mode 100644 index 5d65dc71e2..0000000000 --- a/examples/widgets/graphicsview/boxes/scene.h +++ /dev/null @@ -1,247 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef SCENE_H -#define SCENE_H - -#include "glbuffers.h" -#include "glextensions.h" -#include "gltrianglemesh.h" -#include "qtbox.h" -#include "roundedbox.h" -#include "trackball.h" - -QT_BEGIN_NAMESPACE -class QMatrix4x4; -QT_END_NAMESPACE - -class ParameterEdit : public QWidget -{ -public: - virtual void emitChange() = 0; -}; - -class ColorEdit : public ParameterEdit -{ - Q_OBJECT -public: - ColorEdit(QRgb initialColor, int id); - QRgb color() const {return m_color;} - void emitChange() override { emit colorChanged(m_color, m_id); } -public slots: - void editDone(); -signals: - void colorChanged(QRgb color, int id); -protected: - void mousePressEvent(QMouseEvent *event) override; - void setColor(QRgb color); // also emits colorChanged() -private: - QGraphicsScene *m_dialogParentScene; - QLineEdit *m_lineEdit; - QFrame *m_button; - QRgb m_color; - int m_id; -}; - -class FloatEdit : public ParameterEdit -{ - Q_OBJECT -public: - FloatEdit(float initialValue, int id); - float value() const {return m_value;} - void emitChange() override { emit valueChanged(m_value, m_id); } -public slots: - void editDone(); -signals: - void valueChanged(float value, int id); -private: - QGraphicsScene *m_dialogParentScene; - QLineEdit *m_lineEdit; - float m_value; - int m_id; -}; - -class GraphicsWidget : public QGraphicsProxyWidget -{ -public: - GraphicsWidget() : QGraphicsProxyWidget(nullptr, Qt::Window) {} -protected: - QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; - void resizeEvent(QGraphicsSceneResizeEvent *event) override; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; -}; - -class TwoSidedGraphicsWidget : public QObject -{ - Q_OBJECT -public: - using QObject::QObject; - void setWidget(int index, QWidget *widget); - QWidget *widget(int index); -public slots: - void flip(); -protected slots: - void animateFlip(); -private: - GraphicsWidget *m_proxyWidgets[2] = {nullptr, nullptr}; - int m_current = 0; - int m_angle = 0; // angle in degrees - int m_delta = 0; -}; - -class RenderOptionsDialog : public QDialog -{ - Q_OBJECT -public: - RenderOptionsDialog(); - int addTexture(const QString &name); - int addShader(const QString &name); - void emitParameterChanged(); -protected slots: - void setColorParameter(QRgb color, int id); - void setFloatParameter(float value, int id); -signals: - void dynamicCubemapToggled(int); - void colorParameterChanged(const QString &, QRgb); - void floatParameterChanged(const QString &, float); - void textureChanged(int); - void shaderChanged(int); - void doubleClicked(); -protected: - void mouseDoubleClickEvent(QMouseEvent *event) override; - - QVector<QByteArray> m_parameterNames; - QComboBox *m_textureCombo; - QComboBox *m_shaderCombo; - QVector<ParameterEdit *> m_parameterEdits; -}; - -class ItemDialog : public QDialog -{ - Q_OBJECT -public: - enum ItemType { - QtBoxItem, - CircleItem, - SquareItem, - }; - - ItemDialog(); -public slots: - void triggerNewQtBox(); - void triggerNewCircleItem(); - void triggerNewSquareItem(); -signals: - void doubleClicked(); - void newItemTriggered(ItemDialog::ItemType type); -protected: - void mouseDoubleClickEvent(QMouseEvent *event) override; -}; - -class Scene : public QGraphicsScene -{ - Q_OBJECT -public: - Scene(int width, int height, int maxTextureSize); - ~Scene(); - void drawBackground(QPainter *painter, const QRectF &rect) override; - -public slots: - void setShader(int index); - void setTexture(int index); - void toggleDynamicCubemap(int state); - void setColorParameter(const QString &name, QRgb color); - void setFloatParameter(const QString &name, float value); - void newItem(ItemDialog::ItemType type); -protected: - void renderBoxes(const QMatrix4x4 &view, int excludeBox = -2); - void setStates(); - void setLights(); - void defaultStates(); - void renderCubemaps(); - - void mousePressEvent(QGraphicsSceneMouseEvent *event) override; - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; - void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; - void wheelEvent(QGraphicsSceneWheelEvent * event) override; -private: - void initGL(); - QPointF pixelPosToViewPos(const QPointF& p); - - QTime m_time; // ### Qt 6: remove (unused) - int m_lastTime; - int m_mouseEventTime; - int m_distExp; - int m_frame; - int m_maxTextureSize; - - int m_currentShader; - int m_currentTexture; - bool m_dynamicCubemap; - bool m_updateAllCubemaps; - - RenderOptionsDialog *m_renderOptions; - ItemDialog *m_itemDialog; - QTimer *m_timer; - GLRoundedBox *m_box; - TrackBall m_trackBalls[3]; - QVector<GLTexture *> m_textures; - GLTextureCube *m_environment; - GLTexture3D *m_noise; - GLRenderTargetCube *m_mainCubemap; - QVector<GLRenderTargetCube *> m_cubemaps; - QVector<QGLShaderProgram *> m_programs; - QGLShader *m_vertexShader; - QVector<QGLShader *> m_fragmentShaders; - QGLShader *m_environmentShader; - QGLShaderProgram *m_environmentProgram; -}; - -#endif diff --git a/examples/widgets/graphicsview/boxes/smiley.png b/examples/widgets/graphicsview/boxes/smiley.png Binary files differdeleted file mode 100644 index 41cfda6b23..0000000000 --- a/examples/widgets/graphicsview/boxes/smiley.png +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/square.jpg b/examples/widgets/graphicsview/boxes/square.jpg Binary files differdeleted file mode 100644 index 03f53bd530..0000000000 --- a/examples/widgets/graphicsview/boxes/square.jpg +++ /dev/null diff --git a/examples/widgets/graphicsview/boxes/trackball.cpp b/examples/widgets/graphicsview/boxes/trackball.cpp deleted file mode 100644 index b9dfc1fc7f..0000000000 --- a/examples/widgets/graphicsview/boxes/trackball.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "trackball.h" -#include "scene.h" - -//============================================================================// -// TrackBall // -//============================================================================// - -TrackBall::TrackBall(TrackMode mode) - : TrackBall(0, QVector3D(0, 1, 0), mode) -{ -} - -TrackBall::TrackBall(float angularVelocity, const QVector3D& axis, TrackMode mode) - : m_axis(axis) - , m_angularVelocity(angularVelocity) - , m_mode(mode) -{} - -void TrackBall::push(const QPointF& p, const QQuaternion &) -{ - m_rotation = rotation(); - m_pressed = true; - m_lastTime = QTime::currentTime(); - m_lastPos = p; - m_angularVelocity = 0.0f; -} - -void TrackBall::move(const QPointF& p, const QQuaternion &transformation) -{ - if (!m_pressed) - return; - - QTime currentTime = QTime::currentTime(); - int msecs = m_lastTime.msecsTo(currentTime); - if (msecs <= 20) - return; - - switch (m_mode) { - case Plane: - { - QLineF delta(m_lastPos, p); - const float angleDelta = qRadiansToDegrees(float(delta.length())); - m_angularVelocity = angleDelta / msecs; - m_axis = QVector3D(-delta.dy(), delta.dx(), 0.0f).normalized(); - m_axis = transformation.rotatedVector(m_axis); - m_rotation = QQuaternion::fromAxisAndAngle(m_axis, angleDelta) * m_rotation; - } - break; - case Sphere: - { - QVector3D lastPos3D = QVector3D(m_lastPos.x(), m_lastPos.y(), 0.0f); - float sqrZ = 1 - QVector3D::dotProduct(lastPos3D, lastPos3D); - if (sqrZ > 0) - lastPos3D.setZ(std::sqrt(sqrZ)); - else - lastPos3D.normalize(); - - QVector3D currentPos3D = QVector3D(p.x(), p.y(), 0.0f); - sqrZ = 1 - QVector3D::dotProduct(currentPos3D, currentPos3D); - if (sqrZ > 0) - currentPos3D.setZ(std::sqrt(sqrZ)); - else - currentPos3D.normalize(); - - m_axis = QVector3D::crossProduct(lastPos3D, currentPos3D); - float angle = qRadiansToDegrees(std::asin(m_axis.length())); - - m_angularVelocity = angle / msecs; - m_axis.normalize(); - m_axis = transformation.rotatedVector(m_axis); - m_rotation = QQuaternion::fromAxisAndAngle(m_axis, angle) * m_rotation; - } - break; - } - - - m_lastPos = p; - m_lastTime = currentTime; -} - -void TrackBall::release(const QPointF& p, const QQuaternion &transformation) -{ - // Calling move() caused the rotation to stop if the framerate was too low. - move(p, transformation); - m_pressed = false; -} - -void TrackBall::start() -{ - m_lastTime = QTime::currentTime(); - m_paused = false; -} - -void TrackBall::stop() -{ - m_rotation = rotation(); - m_paused = true; -} - -QQuaternion TrackBall::rotation() const -{ - if (m_paused || m_pressed) - return m_rotation; - - QTime currentTime = QTime::currentTime(); - float angle = m_angularVelocity * m_lastTime.msecsTo(currentTime); - return QQuaternion::fromAxisAndAngle(m_axis, angle) * m_rotation; -} - diff --git a/examples/widgets/graphicsview/boxes/trackball.h b/examples/widgets/graphicsview/boxes/trackball.h deleted file mode 100644 index af90e4d842..0000000000 --- a/examples/widgets/graphicsview/boxes/trackball.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef TRACKBALL_H -#define TRACKBALL_H - -#include <QQuaternion> -#include <QTime> -#include <QVector3D> - -class TrackBall -{ -public: - enum TrackMode - { - Plane, - Sphere, - }; - TrackBall(TrackMode mode = Sphere); - TrackBall(float angularVelocity, const QVector3D &axis, TrackMode mode = Sphere); - // coordinates in [-1,1]x[-1,1] - void push(const QPointF &p, const QQuaternion &transformation); - void move(const QPointF &p, const QQuaternion &transformation); - void release(const QPointF &p, const QQuaternion &transformation); - void start(); // starts clock - void stop(); // stops clock - QQuaternion rotation() const; -private: - QQuaternion m_rotation; - QVector3D m_axis = QVector3D(0, 1, 0); - float m_angularVelocity = 0; - - QPointF m_lastPos; - QTime m_lastTime = QTime::currentTime(); - TrackMode m_mode; - bool m_paused = false; - bool m_pressed = false; -}; - -#endif diff --git a/examples/widgets/graphicsview/boxes/wood.fsh b/examples/widgets/graphicsview/boxes/wood.fsh deleted file mode 100644 index fbb5195f3a..0000000000 --- a/examples/widgets/graphicsview/boxes/wood.fsh +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -varying vec3 position, normal; -varying vec4 specular, ambient, diffuse, lightDirection; - -uniform sampler2D tex; -uniform sampler3D noise; - -//const vec4 woodColors[2] = {vec4(0.37,0.24,0.20,1), vec4(0.8,0.6,0.4,1)}; -uniform vec4 woodColors[2]; -//const float woodTubulence = 0.1; -uniform float woodTubulence; - -void main() -{ - float r = length(gl_TexCoord[1].yz); - r += woodTubulence * texture3D(noise, 0.25 * gl_TexCoord[1].xyz).x; - - vec3 N = normalize(normal); - // assume directional light - - gl_MaterialParameters M = gl_FrontMaterial; - - float NdotL = dot(N, lightDirection.xyz); - float RdotL = dot(reflect(normalize(position), N), lightDirection.xyz); - - float f = fract(16.0 * r); - vec4 unlitColor = mix(woodColors[0], woodColors[1], min(1.25 * f, 5.0 - 5.0 * f)); - gl_FragColor = (ambient + diffuse * max(NdotL, 0.0)) * unlitColor + - M.specular * specular * pow(max(RdotL, 0.0), M.shininess); -} diff --git a/examples/widgets/graphicsview/chip/.prev_CMakeLists.txt b/examples/widgets/graphicsview/chip/.prev_CMakeLists.txt new file mode 100644 index 0000000000..b82c3eced8 --- /dev/null +++ b/examples/widgets/graphicsview/chip/.prev_CMakeLists.txt @@ -0,0 +1,58 @@ +# Generated from chip.pro. + +cmake_minimum_required(VERSION 3.14) +project(chip LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/chip") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(chip + chip.cpp chip.h + main.cpp + mainwindow.cpp mainwindow.h + view.cpp view.h +) +target_link_libraries(chip PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set(images_resource_files + "fileprint.png" + "qt4logo.png" + "rotateleft.png" + "rotateright.png" + "zoomin.png" + "zoomout.png" +) + +qt6_add_resources(chip "images" + PREFIX + "/" + FILES + ${images_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(chip PUBLIC + Qt::PrintSupport + ) +endif() + +install(TARGETS chip + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/graphicsview/chip/CMakeLists.txt b/examples/widgets/graphicsview/chip/CMakeLists.txt index 302a8a56ca..41af2553ee 100644 --- a/examples/widgets/graphicsview/chip/CMakeLists.txt +++ b/examples/widgets/graphicsview/chip/CMakeLists.txt @@ -9,27 +9,48 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/chip") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS OpenGL) # special case find_package(Qt6 COMPONENTS PrintSupport) # special case add_qt_gui_executable(chip chip.cpp chip.h - images.qrc main.cpp mainwindow.cpp mainwindow.h view.cpp view.h ) target_link_libraries(chip PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) -if (TARGET Qt::OpenGL) - target_link_libraries(chip PUBLIC Qt::OpenGL) -endif() -if (TARGET Qt::PrintSupport) - target_link_libraries(chip PUBLIC Qt::PrintSupport) + + +# Resources: +set(images_resource_files + "fileprint.png" + "qt4logo.png" + "rotateleft.png" + "rotateright.png" + "zoomin.png" + "zoomout.png" +) + +qt6_add_resources(chip "images" + PREFIX + "/" + FILES + ${images_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(chip PUBLIC + Qt::PrintSupport + ) endif() install(TARGETS chip diff --git a/examples/widgets/graphicsview/chip/chip.pro b/examples/widgets/graphicsview/chip/chip.pro index a46f07ce35..508928d026 100644 --- a/examples/widgets/graphicsview/chip/chip.pro +++ b/examples/widgets/graphicsview/chip/chip.pro @@ -6,7 +6,6 @@ SOURCES += mainwindow.cpp view.cpp chip.cpp QT += widgets qtHaveModule(printsupport): QT += printsupport -qtHaveModule(opengl): QT += opengl build_all:!build_pass { CONFIG -= build_all diff --git a/examples/widgets/graphicsview/chip/view.cpp b/examples/widgets/graphicsview/chip/view.cpp index 21998dc2df..f24cb738a3 100644 --- a/examples/widgets/graphicsview/chip/view.cpp +++ b/examples/widgets/graphicsview/chip/view.cpp @@ -57,11 +57,7 @@ #include <QPrintDialog> #endif #endif -#ifndef QT_NO_OPENGL -#include <QtOpenGL> -#else #include <QtWidgets> -#endif #include <QtMath> #if QT_CONFIG(wheelevent) @@ -156,14 +152,6 @@ View::View(const QString &name, QWidget *parent) antialiasButton->setText(tr("Antialiasing")); antialiasButton->setCheckable(true); antialiasButton->setChecked(false); - openGlButton = new QToolButton; - openGlButton->setText(tr("OpenGL")); - openGlButton->setCheckable(true); -#ifndef QT_NO_OPENGL - openGlButton->setEnabled(QGLFormat::hasOpenGL()); -#else - openGlButton->setEnabled(false); -#endif printButton = new QToolButton; printButton->setIcon(QIcon(QPixmap(":/fileprint.png"))); @@ -179,7 +167,6 @@ View::View(const QString &name, QWidget *parent) labelLayout->addWidget(dragModeButton); labelLayout->addStretch(); labelLayout->addWidget(antialiasButton); - labelLayout->addWidget(openGlButton); labelLayout->addWidget(printButton); QGridLayout *topLayout = new QGridLayout; @@ -200,7 +187,6 @@ View::View(const QString &name, QWidget *parent) connect(selectModeButton, &QAbstractButton::toggled, this, &View::togglePointerMode); connect(dragModeButton, &QAbstractButton::toggled, this, &View::togglePointerMode); connect(antialiasButton, &QAbstractButton::toggled, this, &View::toggleAntialiasing); - connect(openGlButton, &QAbstractButton::toggled, this, &View::toggleOpenGL); connect(rotateLeftIcon, &QAbstractButton::clicked, this, &View::rotateLeft); connect(rotateRightIcon, &QAbstractButton::clicked, this, &View::rotateRight); connect(zoomInIcon, &QAbstractButton::clicked, this, &View::zoomIn); @@ -234,11 +220,11 @@ void View::setupMatrix() { qreal scale = qPow(qreal(2), (zoomSlider->value() - 250) / qreal(50)); - QMatrix matrix; + QTransform matrix; matrix.scale(scale, scale); matrix.rotate(rotateSlider->value()); - graphicsView->setMatrix(matrix); + graphicsView->setTransform(matrix); setResetButtonEnabled(); } @@ -250,13 +236,6 @@ void View::togglePointerMode() graphicsView->setInteractive(selectModeButton->isChecked()); } -void View::toggleOpenGL() -{ -#ifndef QT_NO_OPENGL - graphicsView->setViewport(openGlButton->isChecked() ? new QGLWidget(QGLFormat(QGL::SampleBuffers)) : new QWidget); -#endif -} - void View::toggleAntialiasing() { graphicsView->setRenderHint(QPainter::Antialiasing, antialiasButton->isChecked()); diff --git a/examples/widgets/graphicsview/chip/view.h b/examples/widgets/graphicsview/chip/view.h index ea7bd414f5..b780702c34 100644 --- a/examples/widgets/graphicsview/chip/view.h +++ b/examples/widgets/graphicsview/chip/view.h @@ -94,7 +94,6 @@ private slots: void setResetButtonEnabled(); void setupMatrix(); void togglePointerMode(); - void toggleOpenGL(); void toggleAntialiasing(); void print(); void rotateLeft(); @@ -106,7 +105,6 @@ private: QLabel *label2; QToolButton *selectModeButton; QToolButton *dragModeButton; - QToolButton *openGlButton; QToolButton *antialiasButton; QToolButton *printButton; QToolButton *resetButton; diff --git a/examples/widgets/graphicsview/collidingmice/CMakeLists.txt b/examples/widgets/graphicsview/collidingmice/CMakeLists.txt index aeda9367a3..c2b0479e76 100644 --- a/examples/widgets/graphicsview/collidingmice/CMakeLists.txt +++ b/examples/widgets/graphicsview/collidingmice/CMakeLists.txt @@ -9,19 +9,35 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/collidingmice") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(collidingmice main.cpp - mice.qrc mouse.cpp mouse.h ) target_link_libraries(collidingmice PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(mice_resource_files + "images/cheese.jpg" +) + +qt6_add_resources(collidingmice "mice" + PREFIX + "/" + FILES + ${mice_resource_files} +) + install(TARGETS collidingmice RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/graphicsview/diagramscene/CMakeLists.txt b/examples/widgets/graphicsview/diagramscene/CMakeLists.txt index 5c7de9c7cd..26afe90016 100644 --- a/examples/widgets/graphicsview/diagramscene/CMakeLists.txt +++ b/examples/widgets/graphicsview/diagramscene/CMakeLists.txt @@ -9,22 +9,53 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/diagramscene") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(diagramscene arrow.cpp arrow.h diagramitem.cpp diagramitem.h - diagramscene.cpp diagramscene.h diagramscene.qrc + diagramscene.cpp diagramscene.h diagramtextitem.cpp diagramtextitem.h main.cpp mainwindow.cpp mainwindow.h ) target_link_libraries(diagramscene PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(diagramscene_resource_files + "images/background1.png" + "images/background2.png" + "images/background3.png" + "images/background4.png" + "images/bold.png" + "images/bringtofront.png" + "images/delete.png" + "images/floodfill.png" + "images/italic.png" + "images/linecolor.png" + "images/linepointer.png" + "images/pointer.png" + "images/sendtoback.png" + "images/textpointer.png" + "images/underline.png" +) + +qt6_add_resources(diagramscene "diagramscene" + PREFIX + "/" + FILES + ${diagramscene_resource_files} +) + install(TARGETS diagramscene RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/graphicsview/diagramscene/mainwindow.cpp b/examples/widgets/graphicsview/diagramscene/mainwindow.cpp index 3327d4d5df..58b959dd10 100644 --- a/examples/widgets/graphicsview/diagramscene/mainwindow.cpp +++ b/examples/widgets/graphicsview/diagramscene/mainwindow.cpp @@ -113,13 +113,14 @@ void MainWindow::backgroundButtonGroupClicked(QAbstractButton *button) //! [1] //! [2] -void MainWindow::buttonGroupClicked(int id) +void MainWindow::buttonGroupClicked(QAbstractButton *button) { const QList<QAbstractButton *> buttons = buttonGroup->buttons(); - for (QAbstractButton *button : buttons) { - if (buttonGroup->button(id) != button) + for (QAbstractButton *myButton : buttons) { + if (myButton != button) button->setChecked(false); } + const int id = buttonGroup->id(button); if (id == InsertTextButton) { scene->setMode(DiagramScene::InsertText); } else { @@ -154,7 +155,7 @@ void MainWindow::deleteItem() //! [3] //! [4] -void MainWindow::pointerGroupClicked(int) +void MainWindow::pointerGroupClicked() { scene->setMode(DiagramScene::Mode(pointerTypeGroup->checkedId())); } @@ -231,8 +232,8 @@ void MainWindow::fontSizeChanged(const QString &) void MainWindow::sceneScaleChanged(const QString &scale) { double newScale = scale.left(scale.indexOf(tr("%"))).toDouble() / 100.0; - QMatrix oldMatrix = view->matrix(); - view->resetMatrix(); + QTransform oldMatrix = view->transform(); + view->resetTransform(); view->translate(oldMatrix.dx(), oldMatrix.dy()); view->scale(newScale, newScale); } @@ -334,7 +335,7 @@ void MainWindow::createToolBox() { buttonGroup = new QButtonGroup(this); buttonGroup->setExclusive(false); - connect(buttonGroup, QOverload<int>::of(&QButtonGroup::buttonClicked), + connect(buttonGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked), this, &MainWindow::buttonGroupClicked); QGridLayout *layout = new QGridLayout; layout->addWidget(createCellWidget(tr("Conditional"), DiagramItem::Conditional), 0, 0); @@ -528,7 +529,7 @@ void MainWindow::createToolbars() pointerTypeGroup = new QButtonGroup(this); pointerTypeGroup->addButton(pointerButton, int(DiagramScene::MoveItem)); pointerTypeGroup->addButton(linePointerButton, int(DiagramScene::InsertLine)); - connect(pointerTypeGroup, QOverload<int>::of(&QButtonGroup::buttonClicked), + connect(pointerTypeGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked), this, &MainWindow::pointerGroupClicked); sceneScaleCombo = new QComboBox; diff --git a/examples/widgets/graphicsview/diagramscene/mainwindow.h b/examples/widgets/graphicsview/diagramscene/mainwindow.h index e04224fbc7..9fcd1884ca 100644 --- a/examples/widgets/graphicsview/diagramscene/mainwindow.h +++ b/examples/widgets/graphicsview/diagramscene/mainwindow.h @@ -82,9 +82,9 @@ public: private slots: void backgroundButtonGroupClicked(QAbstractButton *button); - void buttonGroupClicked(int id); + void buttonGroupClicked(QAbstractButton *button); void deleteItem(); - void pointerGroupClicked(int id); + void pointerGroupClicked(); void bringToFront(); void sendToBack(); void itemInserted(DiagramItem *item); diff --git a/examples/widgets/graphicsview/dragdroprobot/CMakeLists.txt b/examples/widgets/graphicsview/dragdroprobot/CMakeLists.txt index ef367d461f..db6c34065e 100644 --- a/examples/widgets/graphicsview/dragdroprobot/CMakeLists.txt +++ b/examples/widgets/graphicsview/dragdroprobot/CMakeLists.txt @@ -9,19 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/dragdroprobot") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(dragdroprobot coloritem.cpp coloritem.h main.cpp - robot.cpp robot.h robot.qrc + robot.cpp robot.h ) target_link_libraries(dragdroprobot PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(robot_resource_files + "images/head.png" +) + +qt6_add_resources(dragdroprobot "robot" + PREFIX + "/" + FILES + ${robot_resource_files} +) + install(TARGETS dragdroprobot RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/graphicsview/elasticnodes/CMakeLists.txt b/examples/widgets/graphicsview/elasticnodes/CMakeLists.txt index a5d367e2d2..5dc52c9755 100644 --- a/examples/widgets/graphicsview/elasticnodes/CMakeLists.txt +++ b/examples/widgets/graphicsview/elasticnodes/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/elasticnodes") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(elasticnodes @@ -20,6 +22,8 @@ add_qt_gui_executable(elasticnodes node.cpp node.h ) target_link_libraries(elasticnodes PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/graphicsview/embeddeddialogs/CMakeLists.txt b/examples/widgets/graphicsview/embeddeddialogs/CMakeLists.txt index 9e3059176b..0b9df4b4d6 100644 --- a/examples/widgets/graphicsview/embeddeddialogs/CMakeLists.txt +++ b/examples/widgets/graphicsview/embeddeddialogs/CMakeLists.txt @@ -9,20 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/embeddeddialogs") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(embeddeddialogs customproxy.cpp customproxy.h embeddeddialog.cpp embeddeddialog.h embeddeddialog.ui - embeddeddialogs.qrc main.cpp ) target_link_libraries(embeddeddialogs PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(embeddeddialogs_resource_files + "No-Ones-Laughing-3.jpg" +) + +qt6_add_resources(embeddeddialogs "embeddeddialogs" + PREFIX + "/" + FILES + ${embeddeddialogs_resource_files} +) + install(TARGETS embeddeddialogs RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/graphicsview/embeddeddialogs/customproxy.h b/examples/widgets/graphicsview/embeddeddialogs/customproxy.h index d7df2b7b4b..5aa0250a29 100644 --- a/examples/widgets/graphicsview/embeddeddialogs/customproxy.h +++ b/examples/widgets/graphicsview/embeddeddialogs/customproxy.h @@ -59,7 +59,7 @@ class CustomProxy : public QGraphicsProxyWidget Q_OBJECT public: - explicit CustomProxy(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = nullptr); + explicit CustomProxy(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = { }); QRectF boundingRect() const override; void paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, diff --git a/examples/widgets/graphicsview/embeddeddialogs/embeddeddialog.cpp b/examples/widgets/graphicsview/embeddeddialogs/embeddeddialog.cpp index 9fa24fcd17..2f1d9a330c 100644 --- a/examples/widgets/graphicsview/embeddeddialogs/embeddeddialog.cpp +++ b/examples/widgets/graphicsview/embeddeddialogs/embeddeddialog.cpp @@ -67,7 +67,7 @@ EmbeddedDialog::EmbeddedDialog(QWidget *parent) ui->style->setCurrentIndex(ui->style->count() - 1); } - connect(ui->layoutDirection, QOverload<int>::of(&QComboBox::activated), + connect(ui->layoutDirection, &QComboBox::activated, this, &EmbeddedDialog::layoutDirectionChanged); connect(ui->spacing, &QSlider::valueChanged, this, &EmbeddedDialog::spacingChanged); diff --git a/examples/widgets/graphicsview/flowlayout/.prev_CMakeLists.txt b/examples/widgets/graphicsview/flowlayout/.prev_CMakeLists.txt new file mode 100644 index 0000000000..ce24a9fcb2 --- /dev/null +++ b/examples/widgets/graphicsview/flowlayout/.prev_CMakeLists.txt @@ -0,0 +1,33 @@ +# Generated from flowlayout.pro. + +cmake_minimum_required(VERSION 3.14) +project(flowlayout LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/flowlayout") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(flowlayout + flowlayout.cpp flowlayout.h + main.cpp + window.cpp window.h +) +target_link_libraries(flowlayout PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +install(TARGETS flowlayout + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/graphicsview/flowlayout/CMakeLists.txt b/examples/widgets/graphicsview/flowlayout/CMakeLists.txt index 45851ca107..50f41f7782 100644 --- a/examples/widgets/graphicsview/flowlayout/CMakeLists.txt +++ b/examples/widgets/graphicsview/flowlayout/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/graphicsview_flowlayout") # special case +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(graphicsview_flowlayout # special case: renamed flowlayout @@ -18,7 +20,9 @@ add_qt_gui_executable(graphicsview_flowlayout # special case: renamed flowlayout main.cpp window.cpp window.h ) -target_link_libraries(graphicsview_flowlayout PUBLIC # special case: renamed flowlayout +target_link_libraries(graphicsview_flowlayout PUBLIC # special case + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/graphicsview/graphicsview.pro b/examples/widgets/graphicsview/graphicsview.pro index b9bef70a0e..d591450559 100644 --- a/examples/widgets/graphicsview/graphicsview.pro +++ b/examples/widgets/graphicsview/graphicsview.pro @@ -14,7 +14,3 @@ SUBDIRS = \ weatheranchorlayout contains(DEFINES, QT_NO_CURSOR)|!qtConfig(draganddrop): SUBDIRS -= dragdroprobot - -qtHaveModule(opengl):!qtConfig(opengles.):!qtConfig(dynamicgl) { - SUBDIRS += boxes -} diff --git a/examples/widgets/graphicsview/padnavigator/.prev_CMakeLists.txt b/examples/widgets/graphicsview/padnavigator/.prev_CMakeLists.txt index 9c4282391e..748e1e27f3 100644 --- a/examples/widgets/graphicsview/padnavigator/.prev_CMakeLists.txt +++ b/examples/widgets/graphicsview/padnavigator/.prev_CMakeLists.txt @@ -1,45 +1,63 @@ # Generated from padnavigator.pro. -##################################################################### -## padnavigator Binary: -##################################################################### - -add_qt_executable(padnavigator - OUTPUT_DIRECTORY "${INSTALL_EXAMPLESDIR}/widgets/graphicsview/padnavigator" - INSTALL_DIRECTORY "${INSTALL_EXAMPLESDIR}/widgets/graphicsview/padnavigator" - SOURCES - flippablepad.cpp flippablepad.h - form.ui - main.cpp - padnavigator.cpp padnavigator.h - roundrectitem.cpp roundrectitem.h - splashitem.cpp splashitem.h - PUBLIC_LIBRARIES - Qt::Widgets - ENABLE_AUTOGEN_TOOLS - uic +cmake_minimum_required(VERSION 3.14) +project(padnavigator LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/padnavigator") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_executable(padnavigator + flippablepad.cpp flippablepad.h + form.ui + main.cpp + padnavigator.cpp padnavigator.h + roundrectitem.cpp roundrectitem.h + splashitem.cpp splashitem.h +) +target_link_libraries(padnavigator PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets ) + # Resources: -add_qt_resource(padnavigator "padnavigator" FILES - images/artsfftscope.png - images/blue_angle_swirl.jpg - images/kontact_contacts.png - images/kontact_journal.png - images/kontact_mail.png - images/kontact_notes.png - images/kopeteavailable.png - images/metacontact_online.png - images/minitools.png) - - -#### Keys ignored in scope 1:.:.:padnavigator.pro:<TRUE>: -# CONFIG = "console" - -## Scopes: -##################################################################### - -extend_target(padnavigator CONDITION TARGET Qt::OpenGL - PUBLIC_LIBRARIES +set(padnavigator_resource_files + "images/artsfftscope.png" + "images/blue_angle_swirl.jpg" + "images/kontact_contacts.png" + "images/kontact_journal.png" + "images/kontact_mail.png" + "images/kontact_notes.png" + "images/kopeteavailable.png" + "images/metacontact_online.png" + "images/minitools.png" +) + +qt6_add_resources(padnavigator "padnavigator" + PREFIX + "/" + FILES + ${padnavigator_resource_files} +) + +if(TARGET Qt::OpenGL) + target_link_libraries(padnavigator PUBLIC Qt::OpenGL + ) +endif() + +install(TARGETS padnavigator + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" ) diff --git a/examples/widgets/graphicsview/padnavigator/CMakeLists.txt b/examples/widgets/graphicsview/padnavigator/CMakeLists.txt index 7fc6ec1459..7231066b72 100644 --- a/examples/widgets/graphicsview/padnavigator/CMakeLists.txt +++ b/examples/widgets/graphicsview/padnavigator/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/padnavigator") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS OpenGL) # special case @@ -18,18 +20,42 @@ add_executable(padnavigator flippablepad.cpp flippablepad.h form.ui main.cpp - padnavigator.cpp padnavigator.h padnavigator.qrc + padnavigator.cpp padnavigator.h roundrectitem.cpp roundrectitem.h splashitem.cpp splashitem.h ) target_link_libraries(padnavigator PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) -# special case begin -if (TARGET Qt::OpenGL) - target_link_libraries(padnavigator PUBLIC Qt::OpenGL) + + +# Resources: +set(padnavigator_resource_files + "images/artsfftscope.png" + "images/blue_angle_swirl.jpg" + "images/kontact_contacts.png" + "images/kontact_journal.png" + "images/kontact_mail.png" + "images/kontact_notes.png" + "images/kopeteavailable.png" + "images/metacontact_online.png" + "images/minitools.png" +) + +qt6_add_resources(padnavigator "padnavigator" + PREFIX + "/" + FILES + ${padnavigator_resource_files} +) + +if(TARGET Qt::OpenGL) + target_link_libraries(padnavigator PUBLIC + Qt::OpenGL + ) endif() -# special case end install(TARGETS padnavigator RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/graphicsview/padnavigator/padnavigator.cpp b/examples/widgets/graphicsview/padnavigator/padnavigator.cpp index b9ce2a47ca..dbf89dd318 100644 --- a/examples/widgets/graphicsview/padnavigator/padnavigator.cpp +++ b/examples/widgets/graphicsview/padnavigator/padnavigator.cpp @@ -142,24 +142,16 @@ PadNavigator::PadNavigator(const QSize &size, QWidget *parent) // Flip animation setup QPropertyAnimation *smoothFlipRotation = new QPropertyAnimation(flipRotation, "angle"); QPropertyAnimation *smoothFlipScale = new QPropertyAnimation(pad, "scale"); - QPropertyAnimation *smoothFlipXRotation = new QPropertyAnimation(xRotation, "angle"); - QPropertyAnimation *smoothFlipYRotation = new QPropertyAnimation(yRotation, "angle"); QParallelAnimationGroup *flipAnimation = new QParallelAnimationGroup(this); smoothFlipScale->setDuration(500); smoothFlipRotation->setDuration(500); - smoothFlipXRotation->setDuration(500); - smoothFlipYRotation->setDuration(500); smoothFlipScale->setEasingCurve(QEasingCurve::InOutQuad); smoothFlipRotation->setEasingCurve(QEasingCurve::InOutQuad); - smoothFlipXRotation->setEasingCurve(QEasingCurve::InOutQuad); - smoothFlipYRotation->setEasingCurve(QEasingCurve::InOutQuad); smoothFlipScale->setKeyValueAt(0, qvariant_cast<qreal>(1.0)); smoothFlipScale->setKeyValueAt(0.5, qvariant_cast<qreal>(0.7)); smoothFlipScale->setKeyValueAt(1, qvariant_cast<qreal>(1.0)); flipAnimation->addAnimation(smoothFlipRotation); flipAnimation->addAnimation(smoothFlipScale); - flipAnimation->addAnimation(smoothFlipXRotation); - flipAnimation->addAnimation(smoothFlipYRotation); //! [7] //! [8] diff --git a/examples/widgets/graphicsview/simpleanchorlayout/CMakeLists.txt b/examples/widgets/graphicsview/simpleanchorlayout/CMakeLists.txt index 56e3199cc9..c7ea760ede 100644 --- a/examples/widgets/graphicsview/simpleanchorlayout/CMakeLists.txt +++ b/examples/widgets/graphicsview/simpleanchorlayout/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/simpleanchorlayout") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(simpleanchorlayout main.cpp ) target_link_libraries(simpleanchorlayout PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/graphicsview/weatheranchorlayout/CMakeLists.txt b/examples/widgets/graphicsview/weatheranchorlayout/CMakeLists.txt index a9745c54e1..d6ca46ab22 100644 --- a/examples/widgets/graphicsview/weatheranchorlayout/CMakeLists.txt +++ b/examples/widgets/graphicsview/weatheranchorlayout/CMakeLists.txt @@ -9,18 +9,39 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/graphicsview/weatheranchorlayout") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(weatheranchorlayout main.cpp - weatheranchorlayout.qrc ) target_link_libraries(weatheranchorlayout PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(weatheranchorlayout_resource_files + "images/5days.jpg" + "images/details.jpg" + "images/place.jpg" + "images/tabbar.jpg" + "images/title.jpg" + "images/weather-few-clouds.png" +) + +qt6_add_resources(weatheranchorlayout "weatheranchorlayout" + PREFIX + "/" + FILES + ${weatheranchorlayout_resource_files} +) + install(TARGETS weatheranchorlayout RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/addressbook/CMakeLists.txt b/examples/widgets/itemviews/addressbook/CMakeLists.txt index eeb4ad23d7..5c14da9ac5 100644 --- a/examples/widgets/itemviews/addressbook/CMakeLists.txt +++ b/examples/widgets/itemviews/addressbook/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/addressbook") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(addressbook @@ -22,6 +24,8 @@ add_qt_gui_executable(addressbook tablemodel.cpp tablemodel.h ) target_link_libraries(addressbook PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/basicsortfiltermodel/CMakeLists.txt b/examples/widgets/itemviews/basicsortfiltermodel/CMakeLists.txt index ee084edab6..90862ac0b0 100644 --- a/examples/widgets/itemviews/basicsortfiltermodel/CMakeLists.txt +++ b/examples/widgets/itemviews/basicsortfiltermodel/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/basicsortfiltermodel") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(basicsortfiltermodel @@ -18,6 +20,8 @@ add_qt_gui_executable(basicsortfiltermodel window.cpp window.h ) target_link_libraries(basicsortfiltermodel PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/chart/CMakeLists.txt b/examples/widgets/itemviews/chart/CMakeLists.txt index 89cac1f515..5788215de6 100644 --- a/examples/widgets/itemviews/chart/CMakeLists.txt +++ b/examples/widgets/itemviews/chart/CMakeLists.txt @@ -9,20 +9,42 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/chart") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(chart - chart.qrc main.cpp mainwindow.cpp mainwindow.h pieview.cpp pieview.h ) target_link_libraries(chart PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(chart_resource_files + "qtdata.cht" +) + +qt6_add_resources(chart "chart" + PREFIX + "/Charts" + FILES + ${chart_resource_files} +) + +if(UNIX AND NOT APPLE AND NOT HAIKU AND NOT INTEGRITY AND NOT VXWORKS) + target_link_libraries(chart PUBLIC + m + ) +endif() + install(TARGETS chart RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/coloreditorfactory/CMakeLists.txt b/examples/widgets/itemviews/coloreditorfactory/CMakeLists.txt index b665171ddb..3ec96a2fc4 100644 --- a/examples/widgets/itemviews/coloreditorfactory/CMakeLists.txt +++ b/examples/widgets/itemviews/coloreditorfactory/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/coloreditorfactory") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(coloreditorfactory @@ -19,6 +21,8 @@ add_qt_gui_executable(coloreditorfactory window.cpp window.h ) target_link_libraries(coloreditorfactory PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/coloreditorfactory/window.cpp b/examples/widgets/itemviews/coloreditorfactory/window.cpp index e4a9379d8f..25e196a80c 100644 --- a/examples/widgets/itemviews/coloreditorfactory/window.cpp +++ b/examples/widgets/itemviews/coloreditorfactory/window.cpp @@ -61,7 +61,7 @@ Window::Window() QItemEditorCreatorBase *colorListCreator = new QStandardItemEditorCreator<ColorListEditor>(); - factory->registerEditor(QVariant::Color, colorListCreator); + factory->registerEditor(QMetaType::QColor, colorListCreator); QItemEditorFactory::setDefaultFactory(factory); diff --git a/examples/widgets/itemviews/combowidgetmapper/CMakeLists.txt b/examples/widgets/itemviews/combowidgetmapper/CMakeLists.txt index af806ceb64..c8a0bc1438 100644 --- a/examples/widgets/itemviews/combowidgetmapper/CMakeLists.txt +++ b/examples/widgets/itemviews/combowidgetmapper/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/combowidgetmapper") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(combowidgetmapper @@ -18,6 +20,8 @@ add_qt_gui_executable(combowidgetmapper window.cpp window.h ) target_link_libraries(combowidgetmapper PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/customsortfiltermodel/CMakeLists.txt b/examples/widgets/itemviews/customsortfiltermodel/CMakeLists.txt index c5110ba8b3..859b88a397 100644 --- a/examples/widgets/itemviews/customsortfiltermodel/CMakeLists.txt +++ b/examples/widgets/itemviews/customsortfiltermodel/CMakeLists.txt @@ -9,21 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/customsortfiltermodel") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(customsortfiltermodel - customsortfiltermodel.qrc filterwidget.cpp filterwidget.h main.cpp mysortfilterproxymodel.cpp mysortfilterproxymodel.h window.cpp window.h ) target_link_libraries(customsortfiltermodel PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(customsortfiltermodel_resource_files + "images/find.png" +) + +qt6_add_resources(customsortfiltermodel "customsortfiltermodel" + PREFIX + "/" + FILES + ${customsortfiltermodel_resource_files} +) + install(TARGETS customsortfiltermodel RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp b/examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp index 4753d04d9b..b0b4017e62 100644 --- a/examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp +++ b/examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp @@ -98,7 +98,7 @@ bool MySortFilterProxyModel::lessThan(const QModelIndex &left, //! [4] //! [6] - if (leftData.type() == QVariant::DateTime) { + if (leftData.userType() == QMetaType::QDateTime) { return leftData.toDateTime() < rightData.toDateTime(); } else { static const QRegularExpression emailPattern("[\\w\\.]*@[\\w\\.]*"); diff --git a/examples/widgets/itemviews/dirview/CMakeLists.txt b/examples/widgets/itemviews/dirview/CMakeLists.txt index 3875436371..6cb902c092 100644 --- a/examples/widgets/itemviews/dirview/CMakeLists.txt +++ b/examples/widgets/itemviews/dirview/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/dirview") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(dirview main.cpp ) target_link_libraries(dirview PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/editabletreemodel/CMakeLists.txt b/examples/widgets/itemviews/editabletreemodel/CMakeLists.txt index c9f46d9e6a..faae8e1a80 100644 --- a/examples/widgets/itemviews/editabletreemodel/CMakeLists.txt +++ b/examples/widgets/itemviews/editabletreemodel/CMakeLists.txt @@ -9,21 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/editabletreemodel") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(editabletreemodel - editabletreemodel.qrc main.cpp mainwindow.cpp mainwindow.h mainwindow.ui treeitem.cpp treeitem.h treemodel.cpp treemodel.h ) target_link_libraries(editabletreemodel PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(editabletreemodel_resource_files + "default.txt" +) + +qt6_add_resources(editabletreemodel "editabletreemodel" + PREFIX + "/" + FILES + ${editabletreemodel_resource_files} +) + install(TARGETS editabletreemodel RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/fetchmore/CMakeLists.txt b/examples/widgets/itemviews/fetchmore/CMakeLists.txt index dded651b57..fea985d049 100644 --- a/examples/widgets/itemviews/fetchmore/CMakeLists.txt +++ b/examples/widgets/itemviews/fetchmore/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/fetchmore") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(fetchmore @@ -19,6 +21,8 @@ add_qt_gui_executable(fetchmore window.cpp window.h ) target_link_libraries(fetchmore PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/flattreeview/CMakeLists.txt b/examples/widgets/itemviews/flattreeview/CMakeLists.txt index 5f9cd9d77c..c0c4ef6146 100644 --- a/examples/widgets/itemviews/flattreeview/CMakeLists.txt +++ b/examples/widgets/itemviews/flattreeview/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/flattreeview") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(flattreeview main.cpp ) target_link_libraries(flattreeview PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/frozencolumn/CMakeLists.txt b/examples/widgets/itemviews/frozencolumn/CMakeLists.txt index 8e2db43944..dab2e0a153 100644 --- a/examples/widgets/itemviews/frozencolumn/CMakeLists.txt +++ b/examples/widgets/itemviews/frozencolumn/CMakeLists.txt @@ -9,19 +9,35 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/frozencolumn") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(frozencolumn freezetablewidget.cpp freezetablewidget.h - grades.qrc main.cpp ) target_link_libraries(frozencolumn PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(grades_resource_files + "grades.txt" +) + +qt6_add_resources(frozencolumn "grades" + PREFIX + "/" + FILES + ${grades_resource_files} +) + install(TARGETS frozencolumn RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/interview/CMakeLists.txt b/examples/widgets/itemviews/interview/CMakeLists.txt index d37ee8fe18..c27018ffa4 100644 --- a/examples/widgets/itemviews/interview/CMakeLists.txt +++ b/examples/widgets/itemviews/interview/CMakeLists.txt @@ -9,19 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/interview") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(interview - interview.qrc main.cpp model.cpp model.h ) target_link_libraries(interview PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(interview_resource_files + "images/folder.png" + "images/interview.png" + "images/services.png" +) + +qt6_add_resources(interview "interview" + PREFIX + "/" + FILES + ${interview_resource_files} +) + install(TARGETS interview RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/pixelator/.prev_CMakeLists.txt b/examples/widgets/itemviews/pixelator/.prev_CMakeLists.txt new file mode 100644 index 0000000000..1c8ccc6f81 --- /dev/null +++ b/examples/widgets/itemviews/pixelator/.prev_CMakeLists.txt @@ -0,0 +1,53 @@ +# Generated from pixelator.pro. + +cmake_minimum_required(VERSION 3.14) +project(pixelator LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/pixelator") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(pixelator + imagemodel.cpp imagemodel.h + main.cpp + mainwindow.cpp mainwindow.h + pixeldelegate.cpp pixeldelegate.h +) +target_link_libraries(pixelator PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set(images_resource_files + "images/qt.png" +) + +qt6_add_resources(pixelator "images" + PREFIX + "/" + FILES + ${images_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(pixelator PUBLIC + Qt::PrintSupport + ) +endif() + +install(TARGETS pixelator + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/itemviews/pixelator/CMakeLists.txt b/examples/widgets/itemviews/pixelator/CMakeLists.txt index dbb888a1b2..aba494c31a 100644 --- a/examples/widgets/itemviews/pixelator/CMakeLists.txt +++ b/examples/widgets/itemviews/pixelator/CMakeLists.txt @@ -9,22 +9,39 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/pixelator") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS PrintSupport) # special case add_qt_gui_executable(pixelator imagemodel.cpp imagemodel.h - images.qrc main.cpp mainwindow.cpp mainwindow.h pixeldelegate.cpp pixeldelegate.h ) target_link_libraries(pixelator PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) -if (TARGET Qt::PrintSupport) + + +# Resources: +set(images_resource_files + "images/qt.png" +) + +qt6_add_resources(pixelator "images" + PREFIX + "/" + FILES + ${images_resource_files} +) + +if(TARGET Qt::PrintSupport) target_link_libraries(pixelator PUBLIC Qt::PrintSupport ) diff --git a/examples/widgets/itemviews/pixelator/mainwindow.cpp b/examples/widgets/itemviews/pixelator/mainwindow.cpp index f6b67e4dba..997f67e3c0 100644 --- a/examples/widgets/itemviews/pixelator/mainwindow.cpp +++ b/examples/widgets/itemviews/pixelator/mainwindow.cpp @@ -116,9 +116,9 @@ MainWindow::MainWindow() connect(quitAction, &QAction::triggered, qApp, &QCoreApplication::quit); connect(aboutAction, &QAction::triggered, this, &MainWindow::showAboutBox); //! [4] - connect(pixelSizeSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(pixelSizeSpinBox, &QSpinBox::valueChanged, delegate, &PixelDelegate::setPixelSize); - connect(pixelSizeSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(pixelSizeSpinBox, &QSpinBox::valueChanged, this, &MainWindow::updateView); //! [4] diff --git a/examples/widgets/itemviews/puzzle/.prev_CMakeLists.txt b/examples/widgets/itemviews/puzzle/.prev_CMakeLists.txt new file mode 100644 index 0000000000..17765e9d47 --- /dev/null +++ b/examples/widgets/itemviews/puzzle/.prev_CMakeLists.txt @@ -0,0 +1,47 @@ +# Generated from puzzle.pro. + +cmake_minimum_required(VERSION 3.14) +project(puzzle LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/puzzle") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(puzzle + main.cpp + mainwindow.cpp mainwindow.h + piecesmodel.cpp piecesmodel.h + puzzlewidget.cpp puzzlewidget.h +) +target_link_libraries(puzzle PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set(puzzle_resource_files + "example.jpg" +) + +qt6_add_resources(puzzle "puzzle" + PREFIX + "/images" + FILES + ${puzzle_resource_files} +) + +install(TARGETS puzzle + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/itemviews/puzzle/CMakeLists.txt b/examples/widgets/itemviews/puzzle/CMakeLists.txt index ed0b4f3f7c..53494d37f1 100644 --- a/examples/widgets/itemviews/puzzle/CMakeLists.txt +++ b/examples/widgets/itemviews/puzzle/CMakeLists.txt @@ -9,21 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/puzzle") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(itemviews_puzzle # special case: renamed puzzle main.cpp mainwindow.cpp mainwindow.h piecesmodel.cpp piecesmodel.h - puzzle.qrc puzzlewidget.cpp puzzlewidget.h ) -target_link_libraries(itemviews_puzzle PUBLIC # special case: renamed puzzle +target_link_libraries(itemviews_puzzle PUBLIC # special case + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(puzzle_resource_files + "example.jpg" +) + +qt6_add_resources(itemviews_puzzle "puzzle" + PREFIX + "/images" + FILES + ${puzzle_resource_files} +) + install(TARGETS itemviews_puzzle # special case: renamed puzzle RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/simpledommodel/CMakeLists.txt b/examples/widgets/itemviews/simpledommodel/CMakeLists.txt index 610b7e2ff2..e22e3fe1ad 100644 --- a/examples/widgets/itemviews/simpledommodel/CMakeLists.txt +++ b/examples/widgets/itemviews/simpledommodel/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/simpledommodel") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Xml) find_package(Qt6 COMPONENTS Widgets) @@ -21,6 +23,8 @@ add_qt_gui_executable(simpledommodel mainwindow.cpp mainwindow.h ) target_link_libraries(simpledommodel PUBLIC + Qt::Core + Qt::Gui Qt::Widgets Qt::Xml ) diff --git a/examples/widgets/itemviews/simpletreemodel/CMakeLists.txt b/examples/widgets/itemviews/simpletreemodel/CMakeLists.txt index 7a1cafc26e..8a6607e584 100644 --- a/examples/widgets/itemviews/simpletreemodel/CMakeLists.txt +++ b/examples/widgets/itemviews/simpletreemodel/CMakeLists.txt @@ -9,20 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/simpletreemodel") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(simpletreemodel main.cpp - simpletreemodel.qrc treeitem.cpp treeitem.h treemodel.cpp treemodel.h ) target_link_libraries(simpletreemodel PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(simpletreemodel_resource_files + "default.txt" +) + +qt6_add_resources(simpletreemodel "simpletreemodel" + PREFIX + "/" + FILES + ${simpletreemodel_resource_files} +) + install(TARGETS simpletreemodel RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/simplewidgetmapper/CMakeLists.txt b/examples/widgets/itemviews/simplewidgetmapper/CMakeLists.txt index 367f24235b..163dc98e2c 100644 --- a/examples/widgets/itemviews/simplewidgetmapper/CMakeLists.txt +++ b/examples/widgets/itemviews/simplewidgetmapper/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/simplewidgetmapper") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(simplewidgetmapper @@ -18,6 +20,8 @@ add_qt_gui_executable(simplewidgetmapper window.cpp window.h ) target_link_libraries(simplewidgetmapper PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/spinboxdelegate/CMakeLists.txt b/examples/widgets/itemviews/spinboxdelegate/CMakeLists.txt index 0c08a1bbba..b73158cd5a 100644 --- a/examples/widgets/itemviews/spinboxdelegate/CMakeLists.txt +++ b/examples/widgets/itemviews/spinboxdelegate/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/spinboxdelegate") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(spinboxdelegate @@ -18,6 +20,8 @@ add_qt_gui_executable(spinboxdelegate main.cpp ) target_link_libraries(spinboxdelegate PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/spreadsheet/.prev_CMakeLists.txt b/examples/widgets/itemviews/spreadsheet/.prev_CMakeLists.txt new file mode 100644 index 0000000000..acf5f187fe --- /dev/null +++ b/examples/widgets/itemviews/spreadsheet/.prev_CMakeLists.txt @@ -0,0 +1,54 @@ +# Generated from spreadsheet.pro. + +cmake_minimum_required(VERSION 3.14) +project(spreadsheet LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/spreadsheet") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(spreadsheet + main.cpp + printview.cpp printview.h + spreadsheet.cpp spreadsheet.h + spreadsheetdelegate.cpp spreadsheetdelegate.h + spreadsheetitem.cpp spreadsheetitem.h +) +target_link_libraries(spreadsheet PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set(spreadsheet_resource_files + "images/interview.png" +) + +qt6_add_resources(spreadsheet "spreadsheet" + PREFIX + "/" + FILES + ${spreadsheet_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(spreadsheet PUBLIC + Qt::PrintSupport + ) +endif() + +install(TARGETS spreadsheet + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/itemviews/spreadsheet/CMakeLists.txt b/examples/widgets/itemviews/spreadsheet/CMakeLists.txt index 7916d07a4d..b1fc6ff01a 100644 --- a/examples/widgets/itemviews/spreadsheet/CMakeLists.txt +++ b/examples/widgets/itemviews/spreadsheet/CMakeLists.txt @@ -9,19 +9,23 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/spreadsheet") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS PrintSupport) # special case add_qt_gui_executable(spreadsheet main.cpp printview.cpp printview.h - spreadsheet.cpp spreadsheet.h spreadsheet.qrc + spreadsheet.cpp spreadsheet.h spreadsheetdelegate.cpp spreadsheetdelegate.h spreadsheetitem.cpp spreadsheetitem.h ) target_link_libraries(spreadsheet PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) # special case begin @@ -30,6 +34,25 @@ if (TARGET Qt::PrintSupport) endif() # special case end + +# Resources: +set(spreadsheet_resource_files + "images/interview.png" +) + +qt6_add_resources(spreadsheet "spreadsheet" + PREFIX + "/" + FILES + ${spreadsheet_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(spreadsheet PUBLIC + Qt::PrintSupport + ) +endif() + install(TARGETS spreadsheet RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.cpp b/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.cpp index eadd5fadb8..ad80a238aa 100644 --- a/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.cpp +++ b/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.cpp @@ -53,7 +53,7 @@ #include <QtWidgets> SpreadSheetDelegate::SpreadSheetDelegate(QObject *parent) - : QItemDelegate(parent) + : QStyledItemDelegate(parent) {} QWidget *SpreadSheetDelegate::createEditor(QWidget *parent, diff --git a/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.h b/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.h index c89459cadf..36c70d2391 100644 --- a/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.h +++ b/examples/widgets/itemviews/spreadsheet/spreadsheetdelegate.h @@ -51,9 +51,9 @@ #ifndef SPREADSHEETDELEGATE_H #define SPREADSHEETDELEGATE_H -#include <QItemDelegate> +#include <QStyledItemDelegate> -class SpreadSheetDelegate : public QItemDelegate +class SpreadSheetDelegate : public QStyledItemDelegate { Q_OBJECT diff --git a/examples/widgets/itemviews/stardelegate/CMakeLists.txt b/examples/widgets/itemviews/stardelegate/CMakeLists.txt index da3a4a07b4..5f6f660488 100644 --- a/examples/widgets/itemviews/stardelegate/CMakeLists.txt +++ b/examples/widgets/itemviews/stardelegate/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/stardelegate") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(stardelegate @@ -20,6 +22,8 @@ add_qt_gui_executable(stardelegate starrating.cpp starrating.h ) target_link_libraries(stardelegate PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/itemviews/storageview/CMakeLists.txt b/examples/widgets/itemviews/storageview/CMakeLists.txt index 06c8afc932..99b4f13861 100644 --- a/examples/widgets/itemviews/storageview/CMakeLists.txt +++ b/examples/widgets/itemviews/storageview/CMakeLists.txt @@ -9,7 +9,7 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/itemviews/storageview") find_package(Qt6 COMPONENTS Core) find_package(Qt6 COMPONENTS Gui) diff --git a/examples/widgets/layouts/basiclayouts/CMakeLists.txt b/examples/widgets/layouts/basiclayouts/CMakeLists.txt index 210ad8d7ff..beb8a0ca90 100644 --- a/examples/widgets/layouts/basiclayouts/CMakeLists.txt +++ b/examples/widgets/layouts/basiclayouts/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/layouts/basiclayouts") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(basiclayouts @@ -18,6 +20,8 @@ add_qt_gui_executable(basiclayouts main.cpp ) target_link_libraries(basiclayouts PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/layouts/borderlayout/CMakeLists.txt b/examples/widgets/layouts/borderlayout/CMakeLists.txt index 0d1b2e772d..f4e51d2fab 100644 --- a/examples/widgets/layouts/borderlayout/CMakeLists.txt +++ b/examples/widgets/layouts/borderlayout/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/layouts/borderlayout") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(borderlayout @@ -19,6 +21,8 @@ add_qt_gui_executable(borderlayout window.cpp window.h ) target_link_libraries(borderlayout PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/layouts/dynamiclayouts/CMakeLists.txt b/examples/widgets/layouts/dynamiclayouts/CMakeLists.txt index 65fe32f181..c2bcd050d5 100644 --- a/examples/widgets/layouts/dynamiclayouts/CMakeLists.txt +++ b/examples/widgets/layouts/dynamiclayouts/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/layouts/dynamiclayouts") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(dynamiclayouts @@ -18,6 +20,8 @@ add_qt_gui_executable(dynamiclayouts main.cpp ) target_link_libraries(dynamiclayouts PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/layouts/flowlayout/CMakeLists.txt b/examples/widgets/layouts/flowlayout/CMakeLists.txt index fff6fa004b..85104eb3eb 100644 --- a/examples/widgets/layouts/flowlayout/CMakeLists.txt +++ b/examples/widgets/layouts/flowlayout/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/layouts/flowlayout") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(flowlayout @@ -19,6 +21,8 @@ add_qt_gui_executable(flowlayout window.cpp window.h ) target_link_libraries(flowlayout PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/layouts/flowlayout/flowlayout.cpp b/examples/widgets/layouts/flowlayout/flowlayout.cpp index 5c59ae025c..9a488557cf 100644 --- a/examples/widgets/layouts/flowlayout/flowlayout.cpp +++ b/examples/widgets/layouts/flowlayout/flowlayout.cpp @@ -123,7 +123,7 @@ QLayoutItem *FlowLayout::takeAt(int index) //! [6] Qt::Orientations FlowLayout::expandingDirections() const { - return 0; + return { }; } //! [6] diff --git a/examples/widgets/mac/qmaccocoaviewcontainer/CMakeLists.txt b/examples/widgets/mac/qmaccocoaviewcontainer/CMakeLists.txt index 7aece18580..158ddc3adf 100644 --- a/examples/widgets/mac/qmaccocoaviewcontainer/CMakeLists.txt +++ b/examples/widgets/mac/qmaccocoaviewcontainer/CMakeLists.txt @@ -9,15 +9,19 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/mac/qmaccocoaviewcontainer") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(qmaccocoaviewcontainer main.mm ) target_link_libraries(qmaccocoaviewcontainer PUBLIC - ${FWAppKit} + "-framework AppKit" + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/mac/qmacnativewidget/CMakeLists.txt b/examples/widgets/mac/qmacnativewidget/CMakeLists.txt index f7d3ba6431..5ed3e0f4cc 100644 --- a/examples/widgets/mac/qmacnativewidget/CMakeLists.txt +++ b/examples/widgets/mac/qmacnativewidget/CMakeLists.txt @@ -9,15 +9,19 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/mac/qmacnativewidget") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(qmacnativewidget main.mm ) target_link_libraries(qmacnativewidget PUBLIC - ${FWAppKit} + "-framework AppKit" + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/mainwindows/application/CMakeLists.txt b/examples/widgets/mainwindows/application/CMakeLists.txt index a59270e824..d66c2ff38a 100644 --- a/examples/widgets/mainwindows/application/CMakeLists.txt +++ b/examples/widgets/mainwindows/application/CMakeLists.txt @@ -9,19 +9,40 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/mainwindows/application") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(application - application.qrc main.cpp mainwindow.cpp mainwindow.h ) target_link_libraries(application PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(application_resource_files + "images/copy.png" + "images/cut.png" + "images/new.png" + "images/open.png" + "images/paste.png" + "images/save.png" +) + +qt6_add_resources(application "application" + PREFIX + "/" + FILES + ${application_resource_files} +) + install(TARGETS application RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/mainwindows/dockwidgets/.prev_CMakeLists.txt b/examples/widgets/mainwindows/dockwidgets/.prev_CMakeLists.txt new file mode 100644 index 0000000000..7bd57f1439 --- /dev/null +++ b/examples/widgets/mainwindows/dockwidgets/.prev_CMakeLists.txt @@ -0,0 +1,54 @@ +# Generated from dockwidgets.pro. + +cmake_minimum_required(VERSION 3.14) +project(dockwidgets LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/mainwindows/dockwidgets") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(dockwidgets + main.cpp + mainwindow.cpp mainwindow.h +) +target_link_libraries(dockwidgets PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set(dockwidgets_resource_files + "images/new.png" + "images/print.png" + "images/save.png" + "images/undo.png" +) + +qt6_add_resources(dockwidgets "dockwidgets" + PREFIX + "/" + FILES + ${dockwidgets_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(dockwidgets PUBLIC + Qt::PrintSupport + ) +endif() + +install(TARGETS dockwidgets + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/mainwindows/dockwidgets/CMakeLists.txt b/examples/widgets/mainwindows/dockwidgets/CMakeLists.txt index 5a58d3b7f7..b811094658 100644 --- a/examples/widgets/mainwindows/dockwidgets/CMakeLists.txt +++ b/examples/widgets/mainwindows/dockwidgets/CMakeLists.txt @@ -9,17 +9,20 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/mainwindows/dockwidgets") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS PrintSupport) # special case add_qt_gui_executable(dockwidgets - dockwidgets.qrc main.cpp mainwindow.cpp mainwindow.h ) target_link_libraries(dockwidgets PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) # special case begin @@ -28,6 +31,28 @@ if (TARGET Qt::PrintSupport) endif() # special case end + +# Resources: +set(dockwidgets_resource_files + "images/new.png" + "images/print.png" + "images/save.png" + "images/undo.png" +) + +qt6_add_resources(dockwidgets "dockwidgets" + PREFIX + "/" + FILES + ${dockwidgets_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(dockwidgets PUBLIC + Qt::PrintSupport + ) +endif() + install(TARGETS dockwidgets RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/mainwindows/mainwindow/CMakeLists.txt b/examples/widgets/mainwindows/mainwindow/CMakeLists.txt index f4f8bdb4ca..3152fb0904 100644 --- a/examples/widgets/mainwindows/mainwindow/CMakeLists.txt +++ b/examples/widgets/mainwindows/mainwindow/CMakeLists.txt @@ -9,20 +9,40 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/mainwindows/mainwindow") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mainwindow colorswatch.cpp colorswatch.h main.cpp - mainwindow.cpp mainwindow.h mainwindow.qrc + mainwindow.cpp mainwindow.h toolbar.cpp toolbar.h ) target_link_libraries(mainwindow PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(mainwindow_resource_files + "qt.png" + "titlebarCenter.png" + "titlebarLeft.png" + "titlebarRight.png" +) + +qt6_add_resources(mainwindow "mainwindow" + PREFIX + "/res" + FILES + ${mainwindow_resource_files} +) + install(TARGETS mainwindow RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/mainwindows/mainwindow/colorswatch.h b/examples/widgets/mainwindows/mainwindow/colorswatch.h index 7f73e46f31..2bd9fd2891 100644 --- a/examples/widgets/mainwindows/mainwindow/colorswatch.h +++ b/examples/widgets/mainwindows/mainwindow/colorswatch.h @@ -62,7 +62,7 @@ class ColorSwatch : public QDockWidget Q_OBJECT public: - explicit ColorSwatch(const QString &colorName, QMainWindow *parent = nullptr, Qt::WindowFlags flags = 0); + explicit ColorSwatch(const QString &colorName, QMainWindow *parent = nullptr, Qt::WindowFlags flags = { }); void setCustomSizeHint(const QSize &size); QMenu *colorSwatchMenu() const { return menu; } diff --git a/examples/widgets/mainwindows/mainwindow/mainwindow.h b/examples/widgets/mainwindows/mainwindow/mainwindow.h index a2c9d30ded..3ce9732763 100644 --- a/examples/widgets/mainwindows/mainwindow/mainwindow.h +++ b/examples/widgets/mainwindows/mainwindow/mainwindow.h @@ -65,7 +65,7 @@ public: explicit MainWindow(const CustomSizeHintMap &customSizeHints, QWidget *parent = nullptr, - Qt::WindowFlags flags = 0); + Qt::WindowFlags flags = { }); public slots: void actionTriggered(QAction *action); diff --git a/examples/widgets/mainwindows/mdi/CMakeLists.txt b/examples/widgets/mainwindows/mdi/CMakeLists.txt index ef5100b998..c75049285d 100644 --- a/examples/widgets/mainwindows/mdi/CMakeLists.txt +++ b/examples/widgets/mainwindows/mdi/CMakeLists.txt @@ -9,20 +9,41 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/mainwindows/mdi") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mdi main.cpp mainwindow.cpp mainwindow.h - mdi.qrc mdichild.cpp mdichild.h ) target_link_libraries(mdi PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(mdi_resource_files + "images/copy.png" + "images/cut.png" + "images/new.png" + "images/open.png" + "images/paste.png" + "images/save.png" +) + +qt6_add_resources(mdi "mdi" + PREFIX + "/" + FILES + ${mdi_resource_files} +) + install(TARGETS mdi RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/mainwindows/menus/CMakeLists.txt b/examples/widgets/mainwindows/menus/CMakeLists.txt index ee3123423b..0e76c3a447 100644 --- a/examples/widgets/mainwindows/menus/CMakeLists.txt +++ b/examples/widgets/mainwindows/menus/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/mainwindows/menus") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(menus @@ -18,6 +20,8 @@ add_qt_gui_executable(menus mainwindow.cpp mainwindow.h ) target_link_libraries(menus PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/mainwindows/sdi/CMakeLists.txt b/examples/widgets/mainwindows/sdi/CMakeLists.txt index 7e737d0eb1..f9d7d5ff3f 100644 --- a/examples/widgets/mainwindows/sdi/CMakeLists.txt +++ b/examples/widgets/mainwindows/sdi/CMakeLists.txt @@ -9,19 +9,40 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/mainwindows/sdi") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(sdi main.cpp mainwindow.cpp mainwindow.h - sdi.qrc ) target_link_libraries(sdi PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(sdi_resource_files + "images/copy.png" + "images/cut.png" + "images/new.png" + "images/open.png" + "images/paste.png" + "images/save.png" +) + +qt6_add_resources(sdi "sdi" + PREFIX + "/" + FILES + ${sdi_resource_files} +) + install(TARGETS sdi RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/affine/.prev_CMakeLists.txt b/examples/widgets/painting/affine/.prev_CMakeLists.txt new file mode 100644 index 0000000000..948456d821 --- /dev/null +++ b/examples/widgets/painting/affine/.prev_CMakeLists.txt @@ -0,0 +1,215 @@ +# Generated from affine.pro. + +cmake_minimum_required(VERSION 3.14) +project(affine LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/affine") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(affine + ../shared/arthurstyle.cpp ../shared/arthurstyle.h + ../shared/arthurwidgets.cpp ../shared/arthurwidgets.h + ../shared/hoverpoints.cpp ../shared/hoverpoints.h + main.cpp + xform.cpp xform.h +) +target_include_directories(affine PUBLIC + ../shared +) + +target_link_libraries(affine PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(affine "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(affine_resource_files + "bg1.jpg" + "xform.cpp" + "xform.html" +) + +qt6_add_resources(affine "affine" + PREFIX + "/res/affine" + FILES + ${affine_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(affine PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(affine PUBLIC + Qt::OpenGL + ) +endif() + +install(TARGETS affine + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/painting/affine/CMakeLists.txt b/examples/widgets/painting/affine/CMakeLists.txt index f526cffb77..56e862d20f 100644 --- a/examples/widgets/painting/affine/CMakeLists.txt +++ b/examples/widgets/painting/affine/CMakeLists.txt @@ -9,24 +9,204 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/affine") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(affine # special case: remove files from ../shared - affine.qrc main.cpp xform.cpp xform.h ) target_include_directories(affine PUBLIC ../shared ) + target_link_libraries(affine PUBLIC + Qt::Core + Qt::Gui Qt::Widgets painting_shared # special case ) + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(affine "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(affine_resource_files + "bg1.jpg" + "xform.cpp" + "xform.html" +) + +qt6_add_resources(affine "affine" + PREFIX + "/res/affine" + FILES + ${affine_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(affine PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(affine PUBLIC + Qt::OpenGL + ) +endif() + install(TARGETS affine RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/affine/xform.cpp b/examples/widgets/painting/affine/xform.cpp index 50acf0f814..4e7cb91ce1 100644 --- a/examples/widgets/painting/affine/xform.cpp +++ b/examples/widgets/painting/affine/xform.cpp @@ -223,7 +223,7 @@ void XFormView::setRotation(qreal r) m_rotation = r; QPointF center(pts->points().at(0)); - QMatrix m; + QTransform m; m.translate(center.x(), center.y()); m.rotate(m_rotation - old_rot); m.translate(-center.x(), -center.y()); @@ -236,7 +236,7 @@ void XFormView::timerEvent(QTimerEvent *e) { if (e->timerId() == timer.timerId()) { QPointF center(pts->points().at(0)); - QMatrix m; + QTransform m; m.translate(center.x(), center.y()); m.rotate(0.2); m.translate(-center.x(), -center.y()); diff --git a/examples/widgets/painting/basicdrawing/CMakeLists.txt b/examples/widgets/painting/basicdrawing/CMakeLists.txt index cee7e48052..b7d4f0a24a 100644 --- a/examples/widgets/painting/basicdrawing/CMakeLists.txt +++ b/examples/widgets/painting/basicdrawing/CMakeLists.txt @@ -9,20 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/basicdrawing") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(basicdrawing - basicdrawing.qrc main.cpp renderarea.cpp renderarea.h window.cpp window.h ) target_link_libraries(basicdrawing PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(basicdrawing_resource_files + "images/brick.png" + "images/qt-logo.png" +) + +qt6_add_resources(basicdrawing "basicdrawing" + PREFIX + "/" + FILES + ${basicdrawing_resource_files} +) + install(TARGETS basicdrawing RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/basicdrawing/window.cpp b/examples/widgets/painting/basicdrawing/window.cpp index 65f6971d13..0a035cc299 100644 --- a/examples/widgets/painting/basicdrawing/window.cpp +++ b/examples/widgets/painting/basicdrawing/window.cpp @@ -157,17 +157,17 @@ Window::Window() //! [7] //! [8] - connect(shapeComboBox, QOverload<int>::of(&QComboBox::activated), + connect(shapeComboBox, &QComboBox::activated, this, &Window::shapeChanged); - connect(penWidthSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(penWidthSpinBox, &QSpinBox::valueChanged, this, &Window::penChanged); - connect(penStyleComboBox, QOverload<int>::of(&QComboBox::activated), + connect(penStyleComboBox, &QComboBox::activated, this, &Window::penChanged); - connect(penCapComboBox, QOverload<int>::of(&QComboBox::activated), + connect(penCapComboBox, &QComboBox::activated, this, &Window::penChanged); - connect(penJoinComboBox, QOverload<int>::of(&QComboBox::activated), + connect(penJoinComboBox, &QComboBox::activated, this, &Window::penChanged); - connect(brushStyleComboBox, QOverload<int>::of(&QComboBox::activated), + connect(brushStyleComboBox, &QComboBox::activated, this, &Window::brushChanged); connect(antialiasingCheckBox, &QAbstractButton::toggled, renderArea, &RenderArea::setAntialiased); diff --git a/examples/widgets/painting/composition/.prev_CMakeLists.txt b/examples/widgets/painting/composition/.prev_CMakeLists.txt new file mode 100644 index 0000000000..c5b1d12e4a --- /dev/null +++ b/examples/widgets/painting/composition/.prev_CMakeLists.txt @@ -0,0 +1,216 @@ +# Generated from composition.pro. + +cmake_minimum_required(VERSION 3.14) +project(composition LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/composition") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(composition + ../shared/arthurstyle.cpp ../shared/arthurstyle.h + ../shared/arthurwidgets.cpp ../shared/arthurwidgets.h + ../shared/hoverpoints.cpp ../shared/hoverpoints.h + composition.cpp composition.h + main.cpp +) +target_include_directories(composition PUBLIC + ../shared +) + +target_link_libraries(composition PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(composition "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(composition_resource_files + "composition.cpp" + "composition.html" + "flower.jpg" + "flower_alpha.jpg" +) + +qt6_add_resources(composition "composition" + PREFIX + "/res/composition" + FILES + ${composition_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(composition PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(composition PUBLIC + Qt::OpenGL + ) +endif() + +install(TARGETS composition + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/painting/composition/CMakeLists.txt b/examples/widgets/painting/composition/CMakeLists.txt index b971f32052..89e356b7ae 100644 --- a/examples/widgets/painting/composition/CMakeLists.txt +++ b/examples/widgets/painting/composition/CMakeLists.txt @@ -9,23 +9,205 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/composition") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(composition # special case: remove files from ../shared - composition.cpp composition.h composition.qrc + composition.cpp composition.h main.cpp ) target_include_directories(composition PUBLIC ../shared ) + target_link_libraries(composition PUBLIC + Qt::Core + Qt::Gui Qt::Widgets painting_shared # special case ) + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(composition "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(composition_resource_files + "composition.cpp" + "composition.html" + "flower.jpg" + "flower_alpha.jpg" +) + +qt6_add_resources(composition "composition" + PREFIX + "/res/composition" + FILES + ${composition_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(composition PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(composition PUBLIC + Qt::OpenGL + ) +endif() + install(TARGETS composition RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/concentriccircles/CMakeLists.txt b/examples/widgets/painting/concentriccircles/CMakeLists.txt index d01d7db607..44d907f12f 100644 --- a/examples/widgets/painting/concentriccircles/CMakeLists.txt +++ b/examples/widgets/painting/concentriccircles/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/concentriccircles") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(concentriccircles @@ -19,6 +21,8 @@ add_qt_gui_executable(concentriccircles window.cpp window.h ) target_link_libraries(concentriccircles PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/painting/deform/.prev_CMakeLists.txt b/examples/widgets/painting/deform/.prev_CMakeLists.txt new file mode 100644 index 0000000000..4a223487ab --- /dev/null +++ b/examples/widgets/painting/deform/.prev_CMakeLists.txt @@ -0,0 +1,214 @@ +# Generated from deform.pro. + +cmake_minimum_required(VERSION 3.14) +project(deform LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/deform") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(deform + ../shared/arthurstyle.cpp ../shared/arthurstyle.h + ../shared/arthurwidgets.cpp ../shared/arthurwidgets.h + ../shared/hoverpoints.cpp ../shared/hoverpoints.h + main.cpp + pathdeform.cpp pathdeform.h +) +target_include_directories(deform PUBLIC + ../shared +) + +target_link_libraries(deform PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(deform "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(deform_resource_files + "pathdeform.cpp" + "pathdeform.html" +) + +qt6_add_resources(deform "deform" + PREFIX + "/res/deform" + FILES + ${deform_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(deform PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(deform PUBLIC + Qt::OpenGL + ) +endif() + +install(TARGETS deform + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/painting/deform/CMakeLists.txt b/examples/widgets/painting/deform/CMakeLists.txt index d3ce6bb06d..79c14d2196 100644 --- a/examples/widgets/painting/deform/CMakeLists.txt +++ b/examples/widgets/painting/deform/CMakeLists.txt @@ -9,24 +9,203 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/deform") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(deform # special case: remove files from ../shared - deform.qrc main.cpp pathdeform.cpp pathdeform.h ) target_include_directories(deform PUBLIC ../shared ) + target_link_libraries(deform PUBLIC + Qt::Core + Qt::Gui Qt::Widgets painting_shared # special case ) + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(deform "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(deform_resource_files + "pathdeform.cpp" + "pathdeform.html" +) + +qt6_add_resources(deform "deform" + PREFIX + "/res/deform" + FILES + ${deform_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(deform PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(deform PUBLIC + Qt::OpenGL + ) +endif() + install(TARGETS deform RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/deform/pathdeform.cpp b/examples/widgets/painting/deform/pathdeform.cpp index d5c8746247..961d5e5e99 100644 --- a/examples/widgets/painting/deform/pathdeform.cpp +++ b/examples/widgets/painting/deform/pathdeform.cpp @@ -374,7 +374,7 @@ void PathDeformRenderer::setText(const QString &text) } for (int i=0; i<m_paths.size(); ++i) - m_paths[i] = m_paths[i] * QMatrix(1, 0, 0, 1, -m_pathBounds.x(), -m_pathBounds.y()); + m_paths[i] = m_paths[i] * QTransform(1, 0, 0, 1, -m_pathBounds.x(), -m_pathBounds.y()); update(); } diff --git a/examples/widgets/painting/fontsampler/CMakeLists.txt b/examples/widgets/painting/fontsampler/CMakeLists.txt index 701512198c..11ad8a3242 100644 --- a/examples/widgets/painting/fontsampler/CMakeLists.txt +++ b/examples/widgets/painting/fontsampler/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/fontsampler") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(fontsampler @@ -19,9 +21,17 @@ add_qt_gui_executable(fontsampler mainwindowbase.ui ) target_link_libraries(fontsampler PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) +if(TARGET Qt::PrintSupport) + target_link_libraries(fontsampler PUBLIC + Qt::PrintSupport + ) +endif() + install(TARGETS fontsampler RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/gradients/.prev_CMakeLists.txt b/examples/widgets/painting/gradients/.prev_CMakeLists.txt new file mode 100644 index 0000000000..f28694a96b --- /dev/null +++ b/examples/widgets/painting/gradients/.prev_CMakeLists.txt @@ -0,0 +1,214 @@ +# Generated from gradients.pro. + +cmake_minimum_required(VERSION 3.14) +project(gradients LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/gradients") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(gradients + ../shared/arthurstyle.cpp ../shared/arthurstyle.h + ../shared/arthurwidgets.cpp ../shared/arthurwidgets.h + ../shared/hoverpoints.cpp ../shared/hoverpoints.h + gradients.cpp gradients.h + main.cpp +) +target_include_directories(gradients PUBLIC + ../shared +) + +target_link_libraries(gradients PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(gradients "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(gradients_resource_files + "gradients.cpp" + "gradients.html" +) + +qt6_add_resources(gradients "gradients" + PREFIX + "/res/gradients" + FILES + ${gradients_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(gradients PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(gradients PUBLIC + Qt::OpenGL + ) +endif() + +install(TARGETS gradients + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/painting/gradients/CMakeLists.txt b/examples/widgets/painting/gradients/CMakeLists.txt index c0f1924e33..0b6c06e5b9 100644 --- a/examples/widgets/painting/gradients/CMakeLists.txt +++ b/examples/widgets/painting/gradients/CMakeLists.txt @@ -9,23 +9,203 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/gradients") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(gradients # special case: remove files from ../shared - gradients.cpp gradients.h gradients.qrc + gradients.cpp gradients.h main.cpp ) target_include_directories(gradients PUBLIC ../shared ) + target_link_libraries(gradients PUBLIC + Qt::Core + Qt::Gui Qt::Widgets painting_shared # special case ) + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(gradients "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(gradients_resource_files + "gradients.cpp" + "gradients.html" +) + +qt6_add_resources(gradients "gradients" + PREFIX + "/res/gradients" + FILES + ${gradients_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(gradients PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(gradients PUBLIC + Qt::OpenGL + ) +endif() + install(TARGETS gradients RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/imagecomposition/CMakeLists.txt b/examples/widgets/painting/imagecomposition/CMakeLists.txt index f6ff7eb2e5..1b3d06da8f 100644 --- a/examples/widgets/painting/imagecomposition/CMakeLists.txt +++ b/examples/widgets/painting/imagecomposition/CMakeLists.txt @@ -9,19 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/imagecomposition") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(imagecomposition imagecomposer.cpp imagecomposer.h - imagecomposition.qrc main.cpp ) target_link_libraries(imagecomposition PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(imagecomposition_resource_files + "images/butterfly.png" + "images/checker.png" +) + +qt6_add_resources(imagecomposition "imagecomposition" + PREFIX + "/" + FILES + ${imagecomposition_resource_files} +) + install(TARGETS imagecomposition RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/imagecomposition/imagecomposer.cpp b/examples/widgets/painting/imagecomposition/imagecomposer.cpp index ffdc8f433c..f0935147cf 100644 --- a/examples/widgets/painting/imagecomposition/imagecomposer.cpp +++ b/examples/widgets/painting/imagecomposition/imagecomposer.cpp @@ -102,7 +102,7 @@ ImageComposer::ImageComposer() //! [3] connect(sourceButton, &QAbstractButton::clicked, this, &ImageComposer::chooseSource); - connect(operatorComboBox, QOverload<int>::of(&QComboBox::activated), + connect(operatorComboBox, &QComboBox::activated, this, &ImageComposer::recalculateResult); connect(destinationButton, &QAbstractButton::clicked, this, &ImageComposer::chooseDestination); diff --git a/examples/widgets/painting/painterpaths/CMakeLists.txt b/examples/widgets/painting/painterpaths/CMakeLists.txt index 0631f5ed01..7ae6f0a016 100644 --- a/examples/widgets/painting/painterpaths/CMakeLists.txt +++ b/examples/widgets/painting/painterpaths/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/painterpaths") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(painterpaths @@ -19,9 +21,17 @@ add_qt_gui_executable(painterpaths window.cpp window.h ) target_link_libraries(painterpaths PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) +if(UNIX AND NOT APPLE AND NOT HAIKU AND NOT INTEGRITY AND NOT VXWORKS) + target_link_libraries(painterpaths PUBLIC + m + ) +endif() + install(TARGETS painterpaths RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/painterpaths/window.cpp b/examples/widgets/painting/painterpaths/window.cpp index 6fb3218313..07d3c5aaa8 100644 --- a/examples/widgets/painting/painterpaths/window.cpp +++ b/examples/widgets/painting/painterpaths/window.cpp @@ -194,19 +194,19 @@ Window::Window() //! [12] //! [16] - connect(fillRuleComboBox, QOverload<int>::of(&QComboBox::activated), + connect(fillRuleComboBox, &QComboBox::activated, this, &Window::fillRuleChanged); - connect(fillColor1ComboBox, QOverload<int>::of(&QComboBox::activated), + connect(fillColor1ComboBox, &QComboBox::activated, this, &Window::fillGradientChanged); - connect(fillColor2ComboBox, QOverload<int>::of(&QComboBox::activated), + connect(fillColor2ComboBox, &QComboBox::activated, this, &Window::fillGradientChanged); - connect(penColorComboBox, QOverload<int>::of(&QComboBox::activated), + connect(penColorComboBox, &QComboBox::activated, this, &Window::penColorChanged); for (RenderArea *area : qAsConst(renderAreas)) { - connect(penWidthSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(penWidthSpinBox, &QSpinBox::valueChanged, area, &RenderArea::setPenWidth); - connect(rotationAngleSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(rotationAngleSpinBox, &QSpinBox::valueChanged, area, &RenderArea::setRotationAngle); } diff --git a/examples/widgets/painting/pathstroke/CMakeLists.txt b/examples/widgets/painting/pathstroke/CMakeLists.txt index 27f18bb848..9f5c24fe88 100644 --- a/examples/widgets/painting/pathstroke/CMakeLists.txt +++ b/examples/widgets/painting/pathstroke/CMakeLists.txt @@ -9,25 +9,204 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/pathstroke") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(pathstroke ../shared/arthurstyle.cpp ../shared/arthurstyle.h ../shared/arthurwidgets.cpp ../shared/arthurwidgets.h ../shared/hoverpoints.cpp ../shared/hoverpoints.h - ../shared/shared.qrc main.cpp - pathstroke.cpp pathstroke.h pathstroke.qrc + pathstroke.cpp pathstroke.h ) target_include_directories(pathstroke PUBLIC ../shared ) + target_link_libraries(pathstroke PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set_source_files_properties("../shared/images/button_normal_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_left.png" +) +set_source_files_properties("../shared/images/button_normal_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_cap_right.png" +) +set_source_files_properties("../shared/images/button_normal_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_normal_stretch.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_left.png" +) +set_source_files_properties("../shared/images/button_pressed_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_cap_right.png" +) +set_source_files_properties("../shared/images/button_pressed_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/button_pressed_stretch.png" +) +set_source_files_properties("../shared/images/frame_bottom.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottom.png" +) +set_source_files_properties("../shared/images/frame_bottomleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomleft.png" +) +set_source_files_properties("../shared/images/frame_bottomright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_bottomright.png" +) +set_source_files_properties("../shared/images/frame_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_left.png" +) +set_source_files_properties("../shared/images/frame_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_right.png" +) +set_source_files_properties("../shared/images/frame_top.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_top.png" +) +set_source_files_properties("../shared/images/frame_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topleft.png" +) +set_source_files_properties("../shared/images/frame_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/frame_topright.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_left.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_right.png" +) +set_source_files_properties("../shared/images/groupframe_bottom_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_bottom_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_left_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_left_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_right_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_right_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_top_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_top_stretch.png" +) +set_source_files_properties("../shared/images/groupframe_topleft.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topleft.png" +) +set_source_files_properties("../shared/images/groupframe_topright.png" + PROPERTIES QT_RESOURCE_ALIAS "images/groupframe_topright.png" +) +set_source_files_properties("../shared/images/line_dash_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot.png" +) +set_source_files_properties("../shared/images/line_dash_dot_dot.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dash_dot_dot.png" +) +set_source_files_properties("../shared/images/line_dashed.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dashed.png" +) +set_source_files_properties("../shared/images/line_dotted.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_dotted.png" +) +set_source_files_properties("../shared/images/line_solid.png" + PROPERTIES QT_RESOURCE_ALIAS "images/line_solid.png" +) +set_source_files_properties("../shared/images/radiobutton-on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton-on.png" +) +set_source_files_properties("../shared/images/radiobutton_off.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_off.png" +) +set_source_files_properties("../shared/images/radiobutton_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/radiobutton_on.png" +) +set_source_files_properties("../shared/images/slider_bar.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_bar.png" +) +set_source_files_properties("../shared/images/slider_thumb_on.png" + PROPERTIES QT_RESOURCE_ALIAS "images/slider_thumb_on.png" +) +set_source_files_properties("../shared/images/title_cap_left.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_left.png" +) +set_source_files_properties("../shared/images/title_cap_right.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_cap_right.png" +) +set_source_files_properties("../shared/images/title_stretch.png" + PROPERTIES QT_RESOURCE_ALIAS "images/title_stretch.png" +) +set(shared_resource_files + "images/button_normal_cap_left.png" + "images/button_normal_cap_right.png" + "images/button_normal_stretch.png" + "images/button_pressed_cap_left.png" + "images/button_pressed_cap_right.png" + "images/button_pressed_stretch.png" + "images/frame_bottom.png" + "images/frame_bottomleft.png" + "images/frame_bottomright.png" + "images/frame_left.png" + "images/frame_right.png" + "images/frame_top.png" + "images/frame_topleft.png" + "images/frame_topright.png" + "images/groupframe_bottom_left.png" + "images/groupframe_bottom_right.png" + "images/groupframe_bottom_stretch.png" + "images/groupframe_left_stretch.png" + "images/groupframe_right_stretch.png" + "images/groupframe_top_stretch.png" + "images/groupframe_topleft.png" + "images/groupframe_topright.png" + "images/line_dash_dot.png" + "images/line_dash_dot_dot.png" + "images/line_dashed.png" + "images/line_dotted.png" + "images/line_solid.png" + "images/radiobutton-on.png" + "images/radiobutton_off.png" + "images/radiobutton_on.png" + "images/slider_bar.png" + "images/slider_thumb_on.png" + "images/title_cap_left.png" + "images/title_cap_right.png" + "images/title_stretch.png" +) + +qt6_add_resources(pathstroke "shared" + PREFIX + "/res" + BASE + "../shared" + FILES + ${shared_resource_files} +) +set(pathstroke_resource_files + "pathstroke.cpp" + "pathstroke.html" +) + +qt6_add_resources(pathstroke "pathstroke" + PREFIX + "/res/pathstroke" + FILES + ${pathstroke_resource_files} +) + +if(QT_FEATURE_opengl) + target_sources(pathstroke PUBLIC + ../shared/fbopaintdevice.cpp ../shared/fbopaintdevice.h + ) + + target_link_libraries(pathstroke PUBLIC + Qt::OpenGL + ) +endif() + install(TARGETS pathstroke RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/painting/pathstroke/pathstroke.cpp b/examples/widgets/painting/pathstroke/pathstroke.cpp index a850ce2672..7dab6f95a2 100644 --- a/examples/widgets/painting/pathstroke/pathstroke.cpp +++ b/examples/widgets/painting/pathstroke/pathstroke.cpp @@ -511,10 +511,10 @@ void PathStrokeRenderer::initializePoints() m_points.clear(); m_vectors.clear(); - QMatrix m; + QTransform m; qreal rot = 360.0 / count; QPointF center(width() / 2, height() / 2); - QMatrix vm; + QTransform vm; vm.shear(2, -1); vm.scale(3, 3); diff --git a/examples/widgets/painting/shared/CMakeLists.txt b/examples/widgets/painting/shared/CMakeLists.txt index 4b873962a6..4c7049e01d 100644 --- a/examples/widgets/painting/shared/CMakeLists.txt +++ b/examples/widgets/painting/shared/CMakeLists.txt @@ -12,9 +12,6 @@ target_sources(painting_shared PRIVATE target_link_libraries(painting_shared PUBLIC Qt::Widgets) target_include_directories(painting_shared PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") -qt6_add_resources(res_files shared.qrc) -target_sources(painting_shared PRIVATE ${res_files}) - ## Scopes: ##################################################################### diff --git a/examples/widgets/painting/shared/arthurwidgets.cpp b/examples/widgets/painting/shared/arthurwidgets.cpp index 40d712c9e3..e24130e464 100644 --- a/examples/widgets/painting/shared/arthurwidgets.cpp +++ b/examples/widgets/painting/shared/arthurwidgets.cpp @@ -62,8 +62,10 @@ #include <QRegularExpression> #include <QOffscreenSurface> #include <QOpenGLContext> -#include <QOpenGLPaintDevice> -#include <QOpenGLWindow> +#if QT_CONFIG(opengl) +#include <QtOpenGL/QOpenGLPaintDevice> +#include <QtOpenGL/QOpenGLWindow> +#endif extern QPixmap cached(const QString &img); diff --git a/examples/widgets/painting/shared/hoverpoints.cpp b/examples/widgets/painting/shared/hoverpoints.cpp index 2bf3963e9e..f834f315f9 100644 --- a/examples/widgets/painting/shared/hoverpoints.cpp +++ b/examples/widgets/painting/shared/hoverpoints.cpp @@ -53,6 +53,10 @@ #include <algorithm> +#if QT_CONFIG(opengl) +#include <QtOpenGL/QOpenGLWindow> +#endif + #define printf HoverPoints::HoverPoints(QWidget *widget, PointShape shape) diff --git a/examples/widgets/painting/shared/shared.pri b/examples/widgets/painting/shared/shared.pri index cb08b00348..7e2b4df8cb 100644 --- a/examples/widgets/painting/shared/shared.pri +++ b/examples/widgets/painting/shared/shared.pri @@ -1,6 +1,7 @@ INCLUDEPATH += $$PWD qtConfig(opengl) { + QT += opengl SOURCES += $$PWD/fbopaintdevice.cpp HEADERS += $$PWD/fbopaintdevice.h } diff --git a/examples/widgets/painting/transformations/CMakeLists.txt b/examples/widgets/painting/transformations/CMakeLists.txt index af50385877..b5725967ea 100644 --- a/examples/widgets/painting/transformations/CMakeLists.txt +++ b/examples/widgets/painting/transformations/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/painting/transformations") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(transformations @@ -19,6 +21,8 @@ add_qt_gui_executable(transformations window.cpp window.h ) target_link_libraries(transformations PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/painting/transformations/window.cpp b/examples/widgets/painting/transformations/window.cpp index 8261c4e12e..a07e4dd5d1 100644 --- a/examples/widgets/painting/transformations/window.cpp +++ b/examples/widgets/painting/transformations/window.cpp @@ -79,7 +79,7 @@ Window::Window() operationComboBoxes[i]->addItem(tr("Scale to 75%")); operationComboBoxes[i]->addItem(tr("Translate by (50, 50)")); - connect(operationComboBoxes[i], QOverload<int>::of(&QComboBox::activated), + connect(operationComboBoxes[i], &QComboBox::activated, this, &Window::operationChanged); layout->addWidget(transformedRenderAreas[i], 0, i + 1); @@ -159,7 +159,7 @@ void Window::setupShapes() shapes.append(text); shapes.append(truck); - connect(shapeComboBox, QOverload<int>::of(&QComboBox::activated), + connect(shapeComboBox, &QComboBox::activated, this, &Window::shapeSelected); } //! [7] diff --git a/examples/widgets/richtext/calendar/CMakeLists.txt b/examples/widgets/richtext/calendar/CMakeLists.txt index c09ebe5895..9cfc150a0e 100644 --- a/examples/widgets/richtext/calendar/CMakeLists.txt +++ b/examples/widgets/richtext/calendar/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/richtext/calendar") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(calendar @@ -18,6 +20,8 @@ add_qt_gui_executable(calendar mainwindow.cpp mainwindow.h ) target_link_libraries(calendar PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/richtext/calendar/mainwindow.cpp b/examples/widgets/richtext/calendar/mainwindow.cpp index 3ddb1cf7ad..8ac5a8cdce 100644 --- a/examples/widgets/richtext/calendar/mainwindow.cpp +++ b/examples/widgets/richtext/calendar/mainwindow.cpp @@ -86,11 +86,11 @@ MainWindow::MainWindow() //! [2] //! [3] - connect(monthCombo, QOverload<int>::of(&QComboBox::activated), + connect(monthCombo, &QComboBox::activated, this, &MainWindow::setMonth); connect(yearEdit, &QDateTimeEdit::dateChanged, this, &MainWindow::setYear); - connect(fontSizeSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(fontSizeSpinBox, &QSpinBox::valueChanged, this, &MainWindow::setFontSize); //! [3] diff --git a/examples/widgets/richtext/orderform/CMakeLists.txt b/examples/widgets/richtext/orderform/CMakeLists.txt index 58dae9ee5d..fc92c60c30 100644 --- a/examples/widgets/richtext/orderform/CMakeLists.txt +++ b/examples/widgets/richtext/orderform/CMakeLists.txt @@ -9,10 +9,11 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/richtext/orderform") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) -find_package(Qt6 COMPONENTS PrintSupport) add_qt_gui_executable(orderform detailsdialog.cpp detailsdialog.h @@ -20,10 +21,15 @@ add_qt_gui_executable(orderform mainwindow.cpp mainwindow.h ) target_link_libraries(orderform PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) -if (TARGET Qt::PrintSupport) - target_link_libraries(orderform PUBLIC Qt::PrintSupport) + +if(TARGET Qt::PrintSupport) + target_link_libraries(orderform PUBLIC + Qt::PrintSupport + ) endif() install(TARGETS orderform diff --git a/examples/widgets/richtext/syntaxhighlighter/CMakeLists.txt b/examples/widgets/richtext/syntaxhighlighter/CMakeLists.txt index fb06e038ec..ec98b1af4f 100644 --- a/examples/widgets/richtext/syntaxhighlighter/CMakeLists.txt +++ b/examples/widgets/richtext/syntaxhighlighter/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/richtext/syntaxhighlighter") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(syntaxhighlighter @@ -19,6 +21,8 @@ add_qt_gui_executable(syntaxhighlighter mainwindow.cpp mainwindow.h ) target_link_libraries(syntaxhighlighter PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/richtext/textedit/.prev_CMakeLists.txt b/examples/widgets/richtext/textedit/.prev_CMakeLists.txt new file mode 100644 index 0000000000..dcb2b628ef --- /dev/null +++ b/examples/widgets/richtext/textedit/.prev_CMakeLists.txt @@ -0,0 +1,98 @@ +# Generated from textedit.pro. + +cmake_minimum_required(VERSION 3.14) +project(textedit LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/richtext/textedit") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(textedit + main.cpp + textedit.cpp textedit.h +) +target_link_libraries(textedit PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + + +# Resources: +set(textedit_resource_files + "example.html" + "images/logo32.png" + "images/mac/checkbox-checked.png" + "images/mac/checkbox.png" + "images/mac/editcopy.png" + "images/mac/editcut.png" + "images/mac/editpaste.png" + "images/mac/editredo.png" + "images/mac/editundo.png" + "images/mac/exportpdf.png" + "images/mac/filenew.png" + "images/mac/fileopen.png" + "images/mac/fileprint.png" + "images/mac/filesave.png" + "images/mac/format-indent-less.png" + "images/mac/format-indent-more.png" + "images/mac/textbold.png" + "images/mac/textcenter.png" + "images/mac/textitalic.png" + "images/mac/textjustify.png" + "images/mac/textleft.png" + "images/mac/textright.png" + "images/mac/textunder.png" + "images/mac/zoomin.png" + "images/mac/zoomout.png" + "images/win/checkbox-checked.png" + "images/win/checkbox.png" + "images/win/editcopy.png" + "images/win/editcut.png" + "images/win/editpaste.png" + "images/win/editredo.png" + "images/win/editundo.png" + "images/win/exportpdf.png" + "images/win/filenew.png" + "images/win/fileopen.png" + "images/win/fileprint.png" + "images/win/filesave.png" + "images/win/format-indent-less.png" + "images/win/format-indent-more.png" + "images/win/textbold.png" + "images/win/textcenter.png" + "images/win/textitalic.png" + "images/win/textjustify.png" + "images/win/textleft.png" + "images/win/textright.png" + "images/win/textunder.png" + "images/win/zoomin.png" + "images/win/zoomout.png" +) + +qt6_add_resources(textedit "textedit" + PREFIX + "/" + FILES + ${textedit_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(textedit PUBLIC + Qt::PrintSupport + ) +endif() + +install(TARGETS textedit + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/richtext/textedit/CMakeLists.txt b/examples/widgets/richtext/textedit/CMakeLists.txt index 4e63898264..8aa4e016fe 100644 --- a/examples/widgets/richtext/textedit/CMakeLists.txt +++ b/examples/widgets/richtext/textedit/CMakeLists.txt @@ -9,16 +9,20 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/richtext/textedit") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS PrintSupport) # special case add_qt_gui_executable(textedit main.cpp - textedit.cpp textedit.h textedit.qrc + textedit.cpp textedit.h ) target_link_libraries(textedit PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) # special case begin @@ -27,6 +31,72 @@ if (TARGET Qt::PrintSupport) endif() # special case end + +# Resources: +set(textedit_resource_files + "example.html" + "images/logo32.png" + "images/mac/checkbox-checked.png" + "images/mac/checkbox.png" + "images/mac/editcopy.png" + "images/mac/editcut.png" + "images/mac/editpaste.png" + "images/mac/editredo.png" + "images/mac/editundo.png" + "images/mac/exportpdf.png" + "images/mac/filenew.png" + "images/mac/fileopen.png" + "images/mac/fileprint.png" + "images/mac/filesave.png" + "images/mac/format-indent-less.png" + "images/mac/format-indent-more.png" + "images/mac/textbold.png" + "images/mac/textcenter.png" + "images/mac/textitalic.png" + "images/mac/textjustify.png" + "images/mac/textleft.png" + "images/mac/textright.png" + "images/mac/textunder.png" + "images/mac/zoomin.png" + "images/mac/zoomout.png" + "images/win/checkbox-checked.png" + "images/win/checkbox.png" + "images/win/editcopy.png" + "images/win/editcut.png" + "images/win/editpaste.png" + "images/win/editredo.png" + "images/win/editundo.png" + "images/win/exportpdf.png" + "images/win/filenew.png" + "images/win/fileopen.png" + "images/win/fileprint.png" + "images/win/filesave.png" + "images/win/format-indent-less.png" + "images/win/format-indent-more.png" + "images/win/textbold.png" + "images/win/textcenter.png" + "images/win/textitalic.png" + "images/win/textjustify.png" + "images/win/textleft.png" + "images/win/textright.png" + "images/win/textunder.png" + "images/win/zoomin.png" + "images/win/zoomout.png" +) + +qt6_add_resources(textedit "textedit" + PREFIX + "/" + FILES + ${textedit_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(textedit PUBLIC + Qt::PrintSupport + ) +endif() + install(TARGETS textedit RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/richtext/textedit/textedit.cpp b/examples/widgets/richtext/textedit/textedit.cpp index 85fb83ab89..efeaf75cc5 100644 --- a/examples/widgets/richtext/textedit/textedit.cpp +++ b/examples/widgets/richtext/textedit/textedit.cpp @@ -389,7 +389,7 @@ void TextEdit::setupTextActions() comboStyle->addItem("Heading 5"); comboStyle->addItem("Heading 6"); - connect(comboStyle, QOverload<int>::of(&QComboBox::activated), this, &TextEdit::textStyle); + connect(comboStyle, &QComboBox::activated, this, &TextEdit::textStyle); comboFont = new QFontComboBox(tb); tb->addWidget(comboFont); diff --git a/examples/widgets/scroller/graphicsview/CMakeLists.txt b/examples/widgets/scroller/graphicsview/CMakeLists.txt index 599d865b65..6e389956e9 100644 --- a/examples/widgets/scroller/graphicsview/CMakeLists.txt +++ b/examples/widgets/scroller/graphicsview/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/scroller/graphicsview") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(graphicsview main.cpp ) target_link_libraries(graphicsview PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/statemachine/eventtransitions/CMakeLists.txt b/examples/widgets/statemachine/eventtransitions/CMakeLists.txt index 244ee89f67..c011eb1e0f 100644 --- a/examples/widgets/statemachine/eventtransitions/CMakeLists.txt +++ b/examples/widgets/statemachine/eventtransitions/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/statemachine/eventtransitions") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(eventtransitions main.cpp ) target_link_libraries(eventtransitions PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/statemachine/factorial/CMakeLists.txt b/examples/widgets/statemachine/factorial/CMakeLists.txt index 55dc15cd38..e4c5ddc92d 100644 --- a/examples/widgets/statemachine/factorial/CMakeLists.txt +++ b/examples/widgets/statemachine/factorial/CMakeLists.txt @@ -9,7 +9,7 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/statemachine/factorial") find_package(Qt6 COMPONENTS Core) diff --git a/examples/widgets/statemachine/pingpong/CMakeLists.txt b/examples/widgets/statemachine/pingpong/CMakeLists.txt index 4104635b59..e194afb59e 100644 --- a/examples/widgets/statemachine/pingpong/CMakeLists.txt +++ b/examples/widgets/statemachine/pingpong/CMakeLists.txt @@ -9,7 +9,7 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/statemachine/pingpong") find_package(Qt6 COMPONENTS Core) diff --git a/examples/widgets/statemachine/rogue/CMakeLists.txt b/examples/widgets/statemachine/rogue/CMakeLists.txt index 25d69a8ce9..0142f60f63 100644 --- a/examples/widgets/statemachine/rogue/CMakeLists.txt +++ b/examples/widgets/statemachine/rogue/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/statemachine/rogue") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(rogue @@ -19,6 +21,8 @@ add_qt_gui_executable(rogue window.cpp window.h ) target_link_libraries(rogue PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/statemachine/trafficlight/CMakeLists.txt b/examples/widgets/statemachine/trafficlight/CMakeLists.txt index c89fec5db1..4069f601ef 100644 --- a/examples/widgets/statemachine/trafficlight/CMakeLists.txt +++ b/examples/widgets/statemachine/trafficlight/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/statemachine/trafficlight") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(trafficlight main.cpp ) target_link_libraries(trafficlight PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/statemachine/twowaybutton/CMakeLists.txt b/examples/widgets/statemachine/twowaybutton/CMakeLists.txt index 8402fd2f12..05a8b87004 100644 --- a/examples/widgets/statemachine/twowaybutton/CMakeLists.txt +++ b/examples/widgets/statemachine/twowaybutton/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/statemachine/twowaybutton") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(twowaybutton main.cpp ) target_link_libraries(twowaybutton PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tools/codecs/CMakeLists.txt b/examples/widgets/tools/codecs/CMakeLists.txt index ed0a303835..7e2714fc4b 100644 --- a/examples/widgets/tools/codecs/CMakeLists.txt +++ b/examples/widgets/tools/codecs/CMakeLists.txt @@ -9,21 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/codecs") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(codecs - codecs.qrc encodingdialog.cpp encodingdialog.h main.cpp mainwindow.cpp mainwindow.h previewform.cpp previewform.h ) target_link_libraries(codecs PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(codecs_resource_files + "images/editcopy.png" +) + +qt6_add_resources(codecs "codecs" + PREFIX + "/" + FILES + ${codecs_resource_files} +) + install(TARGETS codecs RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tools/codecs/previewform.cpp b/examples/widgets/tools/codecs/previewform.cpp index f48651335a..80a99bf271 100644 --- a/examples/widgets/tools/codecs/previewform.cpp +++ b/examples/widgets/tools/codecs/previewform.cpp @@ -167,7 +167,7 @@ PreviewForm::PreviewForm(QWidget *parent) new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); okButton = buttonBox->button(QDialogButtonBox::Ok); - connect(encodingComboBox, QOverload<int>::of(&QComboBox::activated), + connect(encodingComboBox, &QComboBox::activated, this, &PreviewForm::updateTextEdit); connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); diff --git a/examples/widgets/tools/completer/CMakeLists.txt b/examples/widgets/tools/completer/CMakeLists.txt index f5df74ffc8..b60d38cfdc 100644 --- a/examples/widgets/tools/completer/CMakeLists.txt +++ b/examples/widgets/tools/completer/CMakeLists.txt @@ -9,20 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/completer") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(completer - completer.qrc fsmodel.cpp fsmodel.h main.cpp mainwindow.cpp mainwindow.h ) target_link_libraries(completer PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(completer_resource_files + "resources/countries.txt" + "resources/wordlist.txt" +) + +qt6_add_resources(completer "completer" + PREFIX + "/" + FILES + ${completer_resource_files} +) + install(TARGETS completer RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tools/completer/mainwindow.cpp b/examples/widgets/tools/completer/mainwindow.cpp index b50e0a5456..8e9c0e0615 100644 --- a/examples/widgets/tools/completer/mainwindow.cpp +++ b/examples/widgets/tools/completer/mainwindow.cpp @@ -117,13 +117,13 @@ MainWindow::MainWindow(QWidget *parent) contentsLabel = new QLabel; contentsLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - connect(modelCombo, QOverload<int>::of(&QComboBox::activated), + connect(modelCombo, &QComboBox::activated, this, &MainWindow::changeModel); - connect(modeCombo, QOverload<int>::of(&QComboBox::activated), + connect(modeCombo, &QComboBox::activated, this, &MainWindow::changeMode); - connect(caseCombo, QOverload<int>::of(&QComboBox::activated), + connect(caseCombo, &QComboBox::activated, this, &MainWindow::changeCase); - connect(maxVisibleSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(maxVisibleSpinBox, &QSpinBox::valueChanged, this, &MainWindow::changeMaxVisible); //! [2] diff --git a/examples/widgets/tools/customcompleter/CMakeLists.txt b/examples/widgets/tools/customcompleter/CMakeLists.txt index 06b21fcf5b..a1b1deee12 100644 --- a/examples/widgets/tools/customcompleter/CMakeLists.txt +++ b/examples/widgets/tools/customcompleter/CMakeLists.txt @@ -9,20 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/customcompleter") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(customcompleter - customcompleter.qrc main.cpp mainwindow.cpp mainwindow.h textedit.cpp textedit.h ) target_link_libraries(customcompleter PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(customcompleter_resource_files + "resources/wordlist.txt" +) + +qt6_add_resources(customcompleter "customcompleter" + PREFIX + "/" + FILES + ${customcompleter_resource_files} +) + install(TARGETS customcompleter RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tools/echoplugin/echowindow/.prev_CMakeLists.txt b/examples/widgets/tools/echoplugin/echowindow/.prev_CMakeLists.txt new file mode 100644 index 0000000000..cd116482d8 --- /dev/null +++ b/examples/widgets/tools/echoplugin/echowindow/.prev_CMakeLists.txt @@ -0,0 +1,33 @@ +# Generated from echowindow.pro. + +cmake_minimum_required(VERSION 3.14) +project(echoplugin LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/echoplugin") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(echoplugin + echointerface.h + echowindow.cpp echowindow.h + main.cpp +) +target_link_libraries(echoplugin PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +install(TARGETS echoplugin + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/echoplugin/echowindow/CMakeLists.txt b/examples/widgets/tools/echoplugin/echowindow/CMakeLists.txt index 959dc7ad0a..5ca9e75073 100644 --- a/examples/widgets/tools/echoplugin/echowindow/CMakeLists.txt +++ b/examples/widgets/tools/echoplugin/echowindow/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/echoplugin") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(echopluginwindow # special case: renamed target @@ -18,7 +20,9 @@ add_qt_gui_executable(echopluginwindow # special case: renamed target echowindow.cpp echowindow.h main.cpp ) -target_link_libraries(echopluginwindow PUBLIC # special case: renamed target +target_link_libraries(echopluginwindow PUBLIC # special case + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tools/echoplugin/plugin/.prev_CMakeLists.txt b/examples/widgets/tools/echoplugin/plugin/.prev_CMakeLists.txt new file mode 100644 index 0000000000..9f3a93b3bd --- /dev/null +++ b/examples/widgets/tools/echoplugin/plugin/.prev_CMakeLists.txt @@ -0,0 +1,35 @@ +# Generated from plugin.pro. + +cmake_minimum_required(VERSION 3.14) +project(echoplugin LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/echoplugin/plugins") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_library(echoplugin MODULE + echoplugin.cpp echoplugin.h +) +target_include_directories(echoplugin PUBLIC + ../echowindow +) + +target_link_libraries(echoplugin PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +install(TARGETS echoplugin + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/echoplugin/plugin/CMakeLists.txt b/examples/widgets/tools/echoplugin/plugin/CMakeLists.txt index 78f5dcbe70..9f3a93b3bd 100644 --- a/examples/widgets/tools/echoplugin/plugin/CMakeLists.txt +++ b/examples/widgets/tools/echoplugin/plugin/CMakeLists.txt @@ -1,10 +1,35 @@ -# special case begin +# Generated from plugin.pro. + +cmake_minimum_required(VERSION 3.14) +project(echoplugin LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/echoplugin/plugins") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) add_library(echoplugin MODULE echoplugin.cpp echoplugin.h ) +target_include_directories(echoplugin PUBLIC + ../echowindow +) -target_include_directories(echoplugin PUBLIC ../echowindow) -target_link_libraries(echoplugin PUBLIC Qt::Widgets) +target_link_libraries(echoplugin PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) -# special case end +install(TARGETS echoplugin + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/i18n/CMakeLists.txt b/examples/widgets/tools/i18n/CMakeLists.txt index 24759b6d01..783829fe10 100644 --- a/examples/widgets/tools/i18n/CMakeLists.txt +++ b/examples/widgets/tools/i18n/CMakeLists.txt @@ -9,20 +9,49 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/i18n") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(i18n - i18n.qrc languagechooser.cpp languagechooser.h main.cpp mainwindow.cpp mainwindow.h ) target_link_libraries(i18n PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(i18n_resource_files + "translations/i18n_ar.qm" + "translations/i18n_cs.qm" + "translations/i18n_de.qm" + "translations/i18n_el.qm" + "translations/i18n_en.qm" + "translations/i18n_eo.qm" + "translations/i18n_fr.qm" + "translations/i18n_it.qm" + "translations/i18n_jp.qm" + "translations/i18n_ko.qm" + "translations/i18n_no.qm" + "translations/i18n_ru.qm" + "translations/i18n_sv.qm" + "translations/i18n_zh.qm" +) + +qt6_add_resources(i18n "i18n" + PREFIX + "/" + FILES + ${i18n_resource_files} +) + install(TARGETS i18n RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tools/plugandpaint/app/.prev_CMakeLists.txt b/examples/widgets/tools/plugandpaint/app/.prev_CMakeLists.txt new file mode 100644 index 0000000000..0a7a7155ad --- /dev/null +++ b/examples/widgets/tools/plugandpaint/app/.prev_CMakeLists.txt @@ -0,0 +1,66 @@ +# Generated from app.pro. + +cmake_minimum_required(VERSION 3.14) +project(plugandpaint LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/plugandpaint") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(plugandpaint + interfaces.h + main.cpp + mainwindow.cpp mainwindow.h + paintarea.cpp paintarea.h + plugindialog.cpp plugindialog.h +) +target_link_libraries(plugandpaint PUBLIC + # Remove: L../plugins + Qt::Core + Qt::Gui + Qt::Widgets +) + +if(macx-xcode) + target_link_libraries(plugandpaint PUBLIC + ( + ) + pnp_basictools$ + ) +endif() + +if(NOT macx-xcode) + target_link_libraries(plugandpaint PUBLIC + pnp_basictools + ) +endif() + +if(((NOT (macx-xcode)) AND (( NOT debug_and_release OR build_pass ) AND CONFIG(debug,debug OR release))) AND (APPLE)) + target_link_libraries(plugandpaint PUBLIC + (LIBS, 0) + (LIBS, 1) + _debug + ) +endif() + +if(((NOT (macx-xcode)) AND (( NOT debug_and_release OR build_pass ) AND CONFIG(debug,debug OR release))) AND (WIN32)) + target_link_libraries(plugandpaint PUBLIC + (LIBS, 0) + (LIBS, 1) + d + ) +endif() + +install(TARGETS plugandpaint + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/plugandpaint/app/CMakeLists.txt b/examples/widgets/tools/plugandpaint/app/CMakeLists.txt index 8d7f931996..5548074446 100644 --- a/examples/widgets/tools/plugandpaint/app/CMakeLists.txt +++ b/examples/widgets/tools/plugandpaint/app/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/plugandpaint") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(plugandpaint @@ -22,11 +24,43 @@ add_qt_gui_executable(plugandpaint ) target_link_libraries(plugandpaint PUBLIC # Remove: L../plugins + Qt::Core + Qt::Gui Qt::Widgets pnp_basictools # special case ) target_link_libraries(plugandpaint PUBLIC pnp_basictools) # special case +if(macx-xcode) + target_link_libraries(plugandpaint PUBLIC + ( + ) + pnp_basictools$ + ) +endif() + +if(NOT macx-xcode) + target_link_libraries(plugandpaint PUBLIC + pnp_basictools + ) +endif() + +if(((NOT (macx-xcode)) AND (( NOT debug_and_release OR build_pass ) AND CONFIG(debug,debug OR release))) AND (APPLE)) + target_link_libraries(plugandpaint PUBLIC + (LIBS, 0) + (LIBS, 1) + _debug + ) +endif() + +if(((NOT (macx-xcode)) AND (( NOT debug_and_release OR build_pass ) AND CONFIG(debug,debug OR release))) AND (WIN32)) + target_link_libraries(plugandpaint PUBLIC + (LIBS, 0) + (LIBS, 1) + d + ) +endif() + install(TARGETS plugandpaint RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tools/plugandpaint/plugins/basictools/.prev_CMakeLists.txt b/examples/widgets/tools/plugandpaint/plugins/basictools/.prev_CMakeLists.txt new file mode 100644 index 0000000000..fefa30e2a4 --- /dev/null +++ b/examples/widgets/tools/plugandpaint/plugins/basictools/.prev_CMakeLists.txt @@ -0,0 +1,35 @@ +# Generated from basictools.pro. + +cmake_minimum_required(VERSION 3.14) +project(pnp_basictools LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/plugandpaint/plugins") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_library(pnp_basictools MODULE + basictoolsplugin.cpp basictoolsplugin.h +) +target_include_directories(pnp_basictools PUBLIC + ../../app +) + +target_link_libraries(pnp_basictools PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +install(TARGETS pnp_basictools + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/plugandpaint/plugins/basictools/CMakeLists.txt b/examples/widgets/tools/plugandpaint/plugins/basictools/CMakeLists.txt index 64d239b054..fefa30e2a4 100644 --- a/examples/widgets/tools/plugandpaint/plugins/basictools/CMakeLists.txt +++ b/examples/widgets/tools/plugandpaint/plugins/basictools/CMakeLists.txt @@ -1,13 +1,35 @@ -# special case begin +# Generated from basictools.pro. -add_library(pnp_basictools MODULE STATIC +cmake_minimum_required(VERSION 3.14) +project(pnp_basictools LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/plugandpaint/plugins") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_library(pnp_basictools MODULE basictoolsplugin.cpp basictoolsplugin.h ) -set_target_properties(pnp_basictools PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "../../plugins" - RUNTIME_OUTPUT_DIRECTORY "../../plugins" +target_include_directories(pnp_basictools PUBLIC + ../../app +) + +target_link_libraries(pnp_basictools PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets ) -target_include_directories(pnp_basictools PUBLIC ../../app) -target_link_libraries(pnp_basictools PUBLIC Qt::Widgets) -# special case end +install(TARGETS pnp_basictools + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/plugandpaint/plugins/extrafilters/.prev_CMakeLists.txt b/examples/widgets/tools/plugandpaint/plugins/extrafilters/.prev_CMakeLists.txt new file mode 100644 index 0000000000..2f689893bb --- /dev/null +++ b/examples/widgets/tools/plugandpaint/plugins/extrafilters/.prev_CMakeLists.txt @@ -0,0 +1,35 @@ +# Generated from extrafilters.pro. + +cmake_minimum_required(VERSION 3.14) +project(pnp_extrafilters LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/plugandpaint/plugins") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_library(pnp_extrafilters MODULE + extrafiltersplugin.cpp extrafiltersplugin.h +) +target_include_directories(pnp_extrafilters PUBLIC + ../../app +) + +target_link_libraries(pnp_extrafilters PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +install(TARGETS pnp_extrafilters + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/plugandpaint/plugins/extrafilters/CMakeLists.txt b/examples/widgets/tools/plugandpaint/plugins/extrafilters/CMakeLists.txt index 31d6f5ef65..2f689893bb 100644 --- a/examples/widgets/tools/plugandpaint/plugins/extrafilters/CMakeLists.txt +++ b/examples/widgets/tools/plugandpaint/plugins/extrafilters/CMakeLists.txt @@ -1,9 +1,35 @@ -# special case begin +# Generated from extrafilters.pro. -add_library(pnp_extrafilters_plugin MODULE +cmake_minimum_required(VERSION 3.14) +project(pnp_extrafilters LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/plugandpaint/plugins") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_library(pnp_extrafilters MODULE extrafiltersplugin.cpp extrafiltersplugin.h ) -target_include_directories(pnp_extrafilters_plugin PRIVATE ../../app) -target_link_libraries(pnp_extrafilters_plugin PRIVATE Qt::Widgets) +target_include_directories(pnp_extrafilters PUBLIC + ../../app +) + +target_link_libraries(pnp_extrafilters PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) -# special case end +install(TARGETS pnp_extrafilters + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/regexp/CMakeLists.txt b/examples/widgets/tools/regexp/CMakeLists.txt index 52fc49a084..7c0ca31c39 100644 --- a/examples/widgets/tools/regexp/CMakeLists.txt +++ b/examples/widgets/tools/regexp/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/regexp") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(regexp @@ -18,6 +20,8 @@ add_qt_gui_executable(regexp regexpdialog.cpp regexpdialog.h ) target_link_libraries(regexp PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tools/regularexpression/CMakeLists.txt b/examples/widgets/tools/regularexpression/CMakeLists.txt index 6b18721801..be8fb60a44 100644 --- a/examples/widgets/tools/regularexpression/CMakeLists.txt +++ b/examples/widgets/tools/regularexpression/CMakeLists.txt @@ -9,19 +9,35 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/regularexpression") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(regularexpression main.cpp - regularexpression.qrc regularexpressiondialog.cpp regularexpressiondialog.h ) target_link_libraries(regularexpression PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(regularexpression_resource_files + "images/copy.png" +) + +qt6_add_resources(regularexpression "regularexpression" + PREFIX + "/" + FILES + ${regularexpression_resource_files} +) + install(TARGETS regularexpression RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tools/regularexpression/regularexpressiondialog.cpp b/examples/widgets/tools/regularexpression/regularexpressiondialog.cpp index ea3cb00a02..2f2e2f6ea7 100644 --- a/examples/widgets/tools/regularexpression/regularexpressiondialog.cpp +++ b/examples/widgets/tools/regularexpression/regularexpressiondialog.cpp @@ -222,7 +222,7 @@ RegularExpressionDialog::RegularExpressionDialog(QWidget *parent) connect(optimizeOnFirstUsageOptionCheckBox, &QCheckBox::toggled, this, &RegularExpressionDialog::refresh); connect(dontAutomaticallyOptimizeOptionCheckBox, &QCheckBox::toggled, this, &RegularExpressionDialog::refresh); - connect(offsetSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(offsetSpinBox, &QSpinBox::valueChanged, this, &RegularExpressionDialog::refresh); connect(matchTypeComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), @@ -286,7 +286,7 @@ void RegularExpressionDialog::refresh() setResultUiEnabled(true); - QRegularExpression::MatchType matchType = matchTypeComboBox->currentData().value<QRegularExpression::MatchType>(); + QRegularExpression::MatchType matchType = qvariant_cast<QRegularExpression::MatchType>(matchTypeComboBox->currentData()); QRegularExpression::PatternOptions patternOptions = QRegularExpression::NoPatternOption; QRegularExpression::MatchOptions matchOptions = QRegularExpression::NoMatchOption; diff --git a/examples/widgets/tools/settingseditor/CMakeLists.txt b/examples/widgets/tools/settingseditor/CMakeLists.txt index 28a842c493..3ded759084 100644 --- a/examples/widgets/tools/settingseditor/CMakeLists.txt +++ b/examples/widgets/tools/settingseditor/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/settingseditor") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(settingseditor @@ -21,6 +23,8 @@ add_qt_gui_executable(settingseditor variantdelegate.cpp variantdelegate.h ) target_link_libraries(settingseditor PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tools/settingseditor/locationdialog.cpp b/examples/widgets/tools/settingseditor/locationdialog.cpp index 99c9834a63..86119a1afd 100644 --- a/examples/widgets/tools/settingseditor/locationdialog.cpp +++ b/examples/widgets/tools/settingseditor/locationdialog.cpp @@ -115,9 +115,9 @@ LocationDialog::LocationDialog(QWidget *parent) buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); - connect(formatComboBox, QOverload<int>::of(&QComboBox::activated), + connect(formatComboBox, &QComboBox::activated, this, &LocationDialog::updateLocationsTable); - connect(scopeComboBox, QOverload<int>::of(&QComboBox::activated), + connect(scopeComboBox, &QComboBox::activated, this, &LocationDialog::updateLocationsTable); connect(organizationComboBox->lineEdit(), &QLineEdit::editingFinished, @@ -125,7 +125,7 @@ LocationDialog::LocationDialog(QWidget *parent) connect(applicationComboBox->lineEdit(), &QLineEdit::editingFinished, this, &LocationDialog::updateLocationsTable); - connect(applicationComboBox, QOverload<int>::of(&QComboBox::activated), + connect(applicationComboBox, &QComboBox::activated, this, &LocationDialog::updateLocationsTable); connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); diff --git a/examples/widgets/tools/settingseditor/settingstree.cpp b/examples/widgets/tools/settingseditor/settingstree.cpp index 49d299bf72..9132368e4a 100644 --- a/examples/widgets/tools/settingseditor/settingstree.cpp +++ b/examples/widgets/tools/settingseditor/settingstree.cpp @@ -208,7 +208,7 @@ void SettingsTree::updateChildItems(QTreeWidgetItem *parent) } QVariant value = settings->value(key); - if (value.type() == QVariant::Invalid) { + if (value.userType() == QMetaType::UnknownType) { child->setText(1, "Invalid"); } else { child->setText(1, value.typeName()); diff --git a/examples/widgets/tools/settingseditor/variantdelegate.cpp b/examples/widgets/tools/settingseditor/variantdelegate.cpp index 9772fe8a41..eb822f0dc2 100644 --- a/examples/widgets/tools/settingseditor/variantdelegate.cpp +++ b/examples/widgets/tools/settingseditor/variantdelegate.cpp @@ -81,7 +81,7 @@ void VariantDelegate::paint(QPainter *painter, { if (index.column() == 2) { QVariant value = index.model()->data(index, Qt::UserRole); - if (!isSupportedType(value.type())) { + if (!isSupportedType(value.userType())) { QStyleOptionViewItem myOption = option; myOption.state &= ~QStyle::State_Enabled; QStyledItemDelegate::paint(painter, myOption, index); @@ -100,7 +100,7 @@ QWidget *VariantDelegate::createEditor(QWidget *parent, return nullptr; QVariant originalValue = index.model()->data(index, Qt::UserRole); - if (!isSupportedType(originalValue.type())) + if (!isSupportedType(originalValue.userType())) return nullptr; QLineEdit *lineEdit = new QLineEdit(parent); @@ -108,46 +108,46 @@ QWidget *VariantDelegate::createEditor(QWidget *parent, QRegularExpression regExp; - switch (originalValue.type()) { - case QVariant::Bool: + switch (originalValue.userType()) { + case QMetaType::Bool: regExp = boolExp; break; - case QVariant::ByteArray: + case QMetaType::QByteArray: regExp = byteArrayExp; break; - case QVariant::Char: + case QMetaType::QChar: regExp = charExp; break; - case QVariant::Color: + case QMetaType::QColor: regExp = colorExp; break; - case QVariant::Date: + case QMetaType::QDate: regExp = dateExp; break; - case QVariant::DateTime: + case QMetaType::QDateTime: regExp = dateTimeExp; break; - case QVariant::Double: + case QMetaType::Double: regExp = doubleExp; break; - case QVariant::Int: - case QVariant::LongLong: + case QMetaType::Int: + case QMetaType::LongLong: regExp = signedIntegerExp; break; - case QVariant::Point: + case QMetaType::QPoint: regExp = pointExp; break; - case QVariant::Rect: + case QMetaType::QRect: regExp = rectExp; break; - case QVariant::Size: + case QMetaType::QSize: regExp = sizeExp; break; - case QVariant::Time: + case QMetaType::QTime: regExp = timeExp; break; - case QVariant::UInt: - case QVariant::ULongLong: + case QMetaType::UInt: + case QMetaType::ULongLong: regExp = unsignedIntegerExp; break; default: @@ -189,18 +189,18 @@ void VariantDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, QVariant value; QRegularExpressionMatch match; - switch (originalValue.type()) { - case QVariant::Char: + switch (originalValue.userType()) { + case QMetaType::QChar: value = text.at(0); break; - case QVariant::Color: + case QMetaType::QColor: match = colorExp.match(text); value = QColor(qMin(match.captured(1).toInt(), 255), qMin(match.captured(2).toInt(), 255), qMin(match.captured(3).toInt(), 255), qMin(match.captured(4).toInt(), 255)); break; - case QVariant::Date: + case QMetaType::QDate: { QDate date = QDate::fromString(text, Qt::ISODate); if (!date.isValid()) @@ -208,7 +208,7 @@ void VariantDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, value = date; } break; - case QVariant::DateTime: + case QMetaType::QDateTime: { QDateTime dateTime = QDateTime::fromString(text, Qt::ISODate); if (!dateTime.isValid()) @@ -216,23 +216,23 @@ void VariantDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, value = dateTime; } break; - case QVariant::Point: + case QMetaType::QPoint: match = pointExp.match(text); value = QPoint(match.captured(1).toInt(), match.captured(2).toInt()); break; - case QVariant::Rect: + case QMetaType::QRect: match = rectExp.match(text); value = QRect(match.captured(1).toInt(), match.captured(2).toInt(), match.captured(3).toInt(), match.captured(4).toInt()); break; - case QVariant::Size: + case QMetaType::QSize: match = sizeExp.match(text); value = QSize(match.captured(1).toInt(), match.captured(2).toInt()); break; - case QVariant::StringList: + case QMetaType::QStringList: value = text.split(','); break; - case QVariant::Time: + case QMetaType::QTime: { QTime time = QTime::fromString(text, Qt::ISODate); if (!time.isValid()) @@ -242,33 +242,33 @@ void VariantDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, break; default: value = text; - value.convert(originalValue.type()); + value.convert(originalValue.userType()); } model->setData(index, displayText(value), Qt::DisplayRole); model->setData(index, value, Qt::UserRole); } -bool VariantDelegate::isSupportedType(QVariant::Type type) +bool VariantDelegate::isSupportedType(int type) { switch (type) { - case QVariant::Bool: - case QVariant::ByteArray: - case QVariant::Char: - case QVariant::Color: - case QVariant::Date: - case QVariant::DateTime: - case QVariant::Double: - case QVariant::Int: - case QVariant::LongLong: - case QVariant::Point: - case QVariant::Rect: - case QVariant::Size: - case QVariant::String: - case QVariant::StringList: - case QVariant::Time: - case QVariant::UInt: - case QVariant::ULongLong: + case QMetaType::Bool: + case QMetaType::QByteArray: + case QMetaType::QChar: + case QMetaType::QColor: + case QMetaType::QDate: + case QMetaType::QDateTime: + case QMetaType::Double: + case QMetaType::Int: + case QMetaType::LongLong: + case QMetaType::QPoint: + case QMetaType::QRect: + case QMetaType::QSize: + case QMetaType::QString: + case QMetaType::QStringList: + case QMetaType::QTime: + case QMetaType::UInt: + case QMetaType::ULongLong: return true; default: return false; @@ -277,50 +277,50 @@ bool VariantDelegate::isSupportedType(QVariant::Type type) QString VariantDelegate::displayText(const QVariant &value) { - switch (value.type()) { - case QVariant::Bool: - case QVariant::ByteArray: - case QVariant::Char: - case QVariant::Double: - case QVariant::Int: - case QVariant::LongLong: - case QVariant::String: - case QVariant::UInt: - case QVariant::ULongLong: + switch (value.userType()) { + case QMetaType::Bool: + case QMetaType::QByteArray: + case QMetaType::QChar: + case QMetaType::Double: + case QMetaType::Int: + case QMetaType::LongLong: + case QMetaType::QString: + case QMetaType::UInt: + case QMetaType::ULongLong: return value.toString(); - case QVariant::Color: + case QMetaType::QColor: { QColor color = qvariant_cast<QColor>(value); return QString("(%1,%2,%3,%4)") .arg(color.red()).arg(color.green()) .arg(color.blue()).arg(color.alpha()); } - case QVariant::Date: + case QMetaType::QDate: return value.toDate().toString(Qt::ISODate); - case QVariant::DateTime: + case QMetaType::QDateTime: return value.toDateTime().toString(Qt::ISODate); - case QVariant::Invalid: + case QMetaType::UnknownType: return "<Invalid>"; - case QVariant::Point: + case QMetaType::QPoint: { QPoint point = value.toPoint(); return QString("(%1,%2)").arg(point.x()).arg(point.y()); } - case QVariant::Rect: + case QMetaType::QRect: { QRect rect = value.toRect(); return QString("(%1,%2,%3,%4)") .arg(rect.x()).arg(rect.y()) .arg(rect.width()).arg(rect.height()); } - case QVariant::Size: + case QMetaType::QSize: { QSize size = value.toSize(); return QString("(%1,%2)").arg(size.width()).arg(size.height()); } - case QVariant::StringList: + case QMetaType::QStringList: return value.toStringList().join(','); - case QVariant::Time: + case QMetaType::QTime: return value.toTime().toString(Qt::ISODate); default: break; diff --git a/examples/widgets/tools/settingseditor/variantdelegate.h b/examples/widgets/tools/settingseditor/variantdelegate.h index 68f21fa3f6..96e44fd181 100644 --- a/examples/widgets/tools/settingseditor/variantdelegate.h +++ b/examples/widgets/tools/settingseditor/variantdelegate.h @@ -69,7 +69,7 @@ public: void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; - static bool isSupportedType(QVariant::Type type); + static bool isSupportedType(int type); static QString displayText(const QVariant &value); private: diff --git a/examples/widgets/tools/styleplugin/plugin/.prev_CMakeLists.txt b/examples/widgets/tools/styleplugin/plugin/.prev_CMakeLists.txt new file mode 100644 index 0000000000..c1be706fde --- /dev/null +++ b/examples/widgets/tools/styleplugin/plugin/.prev_CMakeLists.txt @@ -0,0 +1,32 @@ +# Generated from plugin.pro. + +cmake_minimum_required(VERSION 3.14) +project(simplestyleplugin LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/styleplugin/styles") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_library(simplestyleplugin MODULE + simplestyle.cpp simplestyle.h + simplestyleplugin.cpp simplestyleplugin.h +) +target_link_libraries(simplestyleplugin PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +install(TARGETS simplestyleplugin + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt b/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt index 28c6ec07ab..c1be706fde 100644 --- a/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt +++ b/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt @@ -1,9 +1,32 @@ -# special case begin +# Generated from plugin.pro. + +cmake_minimum_required(VERSION 3.14) +project(simplestyleplugin LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/styleplugin/styles") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) add_library(simplestyleplugin MODULE simplestyle.cpp simplestyle.h simplestyleplugin.cpp simplestyleplugin.h ) -target_link_libraries(simplestyleplugin PUBLIC Qt::Widgets) +target_link_libraries(simplestyleplugin PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) -# special case end +install(TARGETS simplestyleplugin + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt b/examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt index 381419a49c..06ae198b42 100644 --- a/examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt +++ b/examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/styleplugin") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(styleplugin @@ -18,6 +20,8 @@ add_qt_gui_executable(styleplugin stylewindow.cpp stylewindow.h ) target_link_libraries(styleplugin PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tools/treemodelcompleter/CMakeLists.txt b/examples/widgets/tools/treemodelcompleter/CMakeLists.txt index 367cddaaf3..71528b14b9 100644 --- a/examples/widgets/tools/treemodelcompleter/CMakeLists.txt +++ b/examples/widgets/tools/treemodelcompleter/CMakeLists.txt @@ -9,19 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/treemodelcompleter") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(treemodelcompleter main.cpp mainwindow.cpp mainwindow.h - treemodelcompleter.cpp treemodelcompleter.h treemodelcompleter.qrc + treemodelcompleter.cpp treemodelcompleter.h ) target_link_libraries(treemodelcompleter PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(treemodelcompleter_resource_files + "resources/treemodel.txt" +) + +qt6_add_resources(treemodelcompleter "treemodelcompleter" + PREFIX + "/" + FILES + ${treemodelcompleter_resource_files} +) + install(TARGETS treemodelcompleter RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tools/treemodelcompleter/mainwindow.cpp b/examples/widgets/tools/treemodelcompleter/mainwindow.cpp index 302ccc436c..3305ac9032 100644 --- a/examples/widgets/tools/treemodelcompleter/mainwindow.cpp +++ b/examples/widgets/tools/treemodelcompleter/mainwindow.cpp @@ -126,9 +126,9 @@ MainWindow::MainWindow(QWidget *parent) //! [1] //! [2] - connect(modeCombo, QOverload<int>::of(&QComboBox::activated), + connect(modeCombo, &QComboBox::activated, this, &MainWindow::changeMode); - connect(caseCombo, QOverload<int>::of(&QComboBox::activated), + connect(caseCombo, &QComboBox::activated, this, &MainWindow::changeMode); lineEdit = new QLineEdit; diff --git a/examples/widgets/tools/undo/CMakeLists.txt b/examples/widgets/tools/undo/CMakeLists.txt index 94df672b96..34bcac326c 100644 --- a/examples/widgets/tools/undo/CMakeLists.txt +++ b/examples/widgets/tools/undo/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/undo") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(undo @@ -18,12 +20,41 @@ add_qt_gui_executable(undo document.cpp document.h main.cpp mainwindow.cpp mainwindow.h mainwindow.ui - undo.qrc ) target_link_libraries(undo PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(undo_resource_files + "icons/background.png" + "icons/blue.png" + "icons/circle.png" + "icons/exit.png" + "icons/fileclose.png" + "icons/filenew.png" + "icons/fileopen.png" + "icons/filesave.png" + "icons/green.png" + "icons/ok.png" + "icons/rectangle.png" + "icons/red.png" + "icons/redo.png" + "icons/remove.png" + "icons/triangle.png" + "icons/undo.png" +) + +qt6_add_resources(undo "undo" + PREFIX + "/" + FILES + ${undo_resource_files} +) + install(TARGETS undo RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tools/undo/mainwindow.cpp b/examples/widgets/tools/undo/mainwindow.cpp index 9d83e3067a..5623a09ad2 100644 --- a/examples/widgets/tools/undo/mainwindow.cpp +++ b/examples/widgets/tools/undo/mainwindow.cpp @@ -86,7 +86,7 @@ MainWindow::MainWindow(QWidget *parent) connect(actionAbout, &QAction::triggered, this, &MainWindow::about); connect(actionAboutQt, &QAction::triggered, this, &MainWindow::aboutQt); - connect(undoLimit, QOverload<int>::of(&QSpinBox::valueChanged), this, &MainWindow::updateActions); + connect(undoLimit, &QSpinBox::valueChanged, this, &MainWindow::updateActions); connect(documentTabs, &QTabWidget::currentChanged, this, &MainWindow::updateActions); actionOpen->setShortcut(QString("Ctrl+O")); diff --git a/examples/widgets/tools/undoframework/CMakeLists.txt b/examples/widgets/tools/undoframework/CMakeLists.txt index 0ccf52e7ad..33b315d4e5 100644 --- a/examples/widgets/tools/undoframework/CMakeLists.txt +++ b/examples/widgets/tools/undoframework/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tools/undoframework") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(undoframework @@ -19,12 +21,26 @@ add_qt_gui_executable(undoframework diagramscene.cpp diagramscene.h main.cpp mainwindow.cpp mainwindow.h - undoframework.qrc ) target_link_libraries(undoframework PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(undoframework_resource_files + "images/cross.png" +) + +qt6_add_resources(undoframework "undoframework" + PREFIX + "/" + FILES + ${undoframework_resource_files} +) + install(TARGETS undoframework RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/touch/dials/CMakeLists.txt b/examples/widgets/touch/dials/CMakeLists.txt index 638302a8ac..cad784f9ec 100644 --- a/examples/widgets/touch/dials/CMakeLists.txt +++ b/examples/widgets/touch/dials/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/touch/dials") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(dials @@ -18,6 +20,8 @@ add_qt_gui_executable(dials main.cpp ) target_link_libraries(dials PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/touch/fingerpaint/.prev_CMakeLists.txt b/examples/widgets/touch/fingerpaint/.prev_CMakeLists.txt new file mode 100644 index 0000000000..f66e866cab --- /dev/null +++ b/examples/widgets/touch/fingerpaint/.prev_CMakeLists.txt @@ -0,0 +1,39 @@ +# Generated from fingerpaint.pro. + +cmake_minimum_required(VERSION 3.14) +project(fingerpaint LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/touch/fingerpaint") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(fingerpaint + main.cpp + mainwindow.cpp mainwindow.h + scribblearea.cpp scribblearea.h +) +target_link_libraries(fingerpaint PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(fingerpaint PUBLIC + Qt::PrintSupport + ) +endif() + +install(TARGETS fingerpaint + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/touch/fingerpaint/CMakeLists.txt b/examples/widgets/touch/fingerpaint/CMakeLists.txt index 25b5c706e6..cc2c8caacf 100644 --- a/examples/widgets/touch/fingerpaint/CMakeLists.txt +++ b/examples/widgets/touch/fingerpaint/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/touch/fingerpaint") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS PrintSupport) # special case @@ -20,6 +22,8 @@ add_qt_gui_executable(fingerpaint scribblearea.cpp scribblearea.h ) target_link_libraries(fingerpaint PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) # special case begin @@ -28,6 +32,12 @@ if (TARGET Qt::PrintSupport) endif() # special case end +if(TARGET Qt::PrintSupport) + target_link_libraries(fingerpaint PUBLIC + Qt::PrintSupport + ) +endif() + install(TARGETS fingerpaint RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/touch/knobs/CMakeLists.txt b/examples/widgets/touch/knobs/CMakeLists.txt index a1eacb4766..a3d44bf650 100644 --- a/examples/widgets/touch/knobs/CMakeLists.txt +++ b/examples/widgets/touch/knobs/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/touch/knobs") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(knobs @@ -18,6 +20,8 @@ add_qt_gui_executable(knobs main.cpp ) target_link_libraries(knobs PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/touch/pinchzoom/CMakeLists.txt b/examples/widgets/touch/pinchzoom/CMakeLists.txt index b14056ade5..08663b75af 100644 --- a/examples/widgets/touch/pinchzoom/CMakeLists.txt +++ b/examples/widgets/touch/pinchzoom/CMakeLists.txt @@ -9,20 +9,36 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/touch/pinchzoom") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(pinchzoom graphicsview.cpp graphicsview.h main.cpp - mice.qrc mouse.cpp mouse.h ) target_link_libraries(pinchzoom PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(mice_resource_files + "images/cheese.jpg" +) + +qt6_add_resources(pinchzoom "mice" + PREFIX + "/" + FILES + ${mice_resource_files} +) + install(TARGETS pinchzoom RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tutorials/addressbook/part1/CMakeLists.txt b/examples/widgets/tutorials/addressbook/part1/CMakeLists.txt index 74e9d98418..f07c38f508 100644 --- a/examples/widgets/tutorials/addressbook/part1/CMakeLists.txt +++ b/examples/widgets/tutorials/addressbook/part1/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/addressbook/part1") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part1 @@ -18,6 +20,8 @@ add_qt_gui_executable(part1 main.cpp ) target_link_libraries(part1 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/addressbook/part2/CMakeLists.txt b/examples/widgets/tutorials/addressbook/part2/CMakeLists.txt index dd7c53170e..07fb93d02f 100644 --- a/examples/widgets/tutorials/addressbook/part2/CMakeLists.txt +++ b/examples/widgets/tutorials/addressbook/part2/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/addressbook/part2") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part2 @@ -18,6 +20,8 @@ add_qt_gui_executable(part2 main.cpp ) target_link_libraries(part2 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/addressbook/part3/CMakeLists.txt b/examples/widgets/tutorials/addressbook/part3/CMakeLists.txt index f1923a9947..89d76cc9ee 100644 --- a/examples/widgets/tutorials/addressbook/part3/CMakeLists.txt +++ b/examples/widgets/tutorials/addressbook/part3/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/addressbook/part3") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part3 @@ -18,6 +20,8 @@ add_qt_gui_executable(part3 main.cpp ) target_link_libraries(part3 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/addressbook/part4/CMakeLists.txt b/examples/widgets/tutorials/addressbook/part4/CMakeLists.txt index fd6ec7d4e7..325490517b 100644 --- a/examples/widgets/tutorials/addressbook/part4/CMakeLists.txt +++ b/examples/widgets/tutorials/addressbook/part4/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/addressbook/part4") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part4 @@ -18,6 +20,8 @@ add_qt_gui_executable(part4 main.cpp ) target_link_libraries(part4 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/addressbook/part5/CMakeLists.txt b/examples/widgets/tutorials/addressbook/part5/CMakeLists.txt index 84f7bd607a..d2ac0f18d8 100644 --- a/examples/widgets/tutorials/addressbook/part5/CMakeLists.txt +++ b/examples/widgets/tutorials/addressbook/part5/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/addressbook/part5") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part5 @@ -19,6 +21,8 @@ add_qt_gui_executable(part5 main.cpp ) target_link_libraries(part5 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/addressbook/part6/CMakeLists.txt b/examples/widgets/tutorials/addressbook/part6/CMakeLists.txt index 172a8157a8..a9375d8913 100644 --- a/examples/widgets/tutorials/addressbook/part6/CMakeLists.txt +++ b/examples/widgets/tutorials/addressbook/part6/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/addressbook/part6") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part6 @@ -19,6 +21,8 @@ add_qt_gui_executable(part6 main.cpp ) target_link_libraries(part6 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/addressbook/part7/CMakeLists.txt b/examples/widgets/tutorials/addressbook/part7/CMakeLists.txt index f420ebeff7..16cc1391e5 100644 --- a/examples/widgets/tutorials/addressbook/part7/CMakeLists.txt +++ b/examples/widgets/tutorials/addressbook/part7/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/addressbook/part7") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part7 @@ -19,6 +21,8 @@ add_qt_gui_executable(part7 main.cpp ) target_link_libraries(part7 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part1/CMakeLists.txt b/examples/widgets/tutorials/gettingStarted/gsQt/part1/CMakeLists.txt index c47d130e3b..4cf9a49d1e 100644 --- a/examples/widgets/tutorials/gettingStarted/gsQt/part1/CMakeLists.txt +++ b/examples/widgets/tutorials/gettingStarted/gsQt/part1/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/gettingStarted/gsQt/part1") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part1 main.cpp ) target_link_libraries(part1 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part2/CMakeLists.txt b/examples/widgets/tutorials/gettingStarted/gsQt/part2/CMakeLists.txt index 024fc717d4..f5ab1d10d1 100644 --- a/examples/widgets/tutorials/gettingStarted/gsQt/part2/CMakeLists.txt +++ b/examples/widgets/tutorials/gettingStarted/gsQt/part2/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/gettingStarted/gsQt/part2") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part2 main.cpp ) target_link_libraries(part2 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part3/CMakeLists.txt b/examples/widgets/tutorials/gettingStarted/gsQt/part3/CMakeLists.txt index 886598c11f..c152c765e2 100644 --- a/examples/widgets/tutorials/gettingStarted/gsQt/part3/CMakeLists.txt +++ b/examples/widgets/tutorials/gettingStarted/gsQt/part3/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/gettingStarted/gsQt/part3") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part3 main.cpp ) target_link_libraries(part3 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part4/CMakeLists.txt b/examples/widgets/tutorials/gettingStarted/gsQt/part4/CMakeLists.txt index e4a532ca37..770d9590b7 100644 --- a/examples/widgets/tutorials/gettingStarted/gsQt/part4/CMakeLists.txt +++ b/examples/widgets/tutorials/gettingStarted/gsQt/part4/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/gettingStarted/gsQt/part4") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part4 main.cpp ) target_link_libraries(part4 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part5/CMakeLists.txt b/examples/widgets/tutorials/gettingStarted/gsQt/part5/CMakeLists.txt index 1b118f50e9..3369838e95 100644 --- a/examples/widgets/tutorials/gettingStarted/gsQt/part5/CMakeLists.txt +++ b/examples/widgets/tutorials/gettingStarted/gsQt/part5/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/gettingStarted/gsQt/part5") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(part5 main.cpp ) target_link_libraries(part5 PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/modelview/1_readonly/CMakeLists.txt b/examples/widgets/tutorials/modelview/1_readonly/CMakeLists.txt index 8c35a4027d..cc34842bcf 100644 --- a/examples/widgets/tutorials/modelview/1_readonly/CMakeLists.txt +++ b/examples/widgets/tutorials/modelview/1_readonly/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/modelview/1_readonly") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mv_readonly @@ -18,6 +20,8 @@ add_qt_gui_executable(mv_readonly mymodel.cpp mymodel.h ) target_link_libraries(mv_readonly PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/modelview/2_formatting/CMakeLists.txt b/examples/widgets/tutorials/modelview/2_formatting/CMakeLists.txt index 8a872c928f..7f8d68b6f8 100644 --- a/examples/widgets/tutorials/modelview/2_formatting/CMakeLists.txt +++ b/examples/widgets/tutorials/modelview/2_formatting/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/modelview/2_formatting") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mv_formatting @@ -18,6 +20,8 @@ add_qt_gui_executable(mv_formatting mymodel.cpp mymodel.h ) target_link_libraries(mv_formatting PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/modelview/3_changingmodel/CMakeLists.txt b/examples/widgets/tutorials/modelview/3_changingmodel/CMakeLists.txt index 04939138fa..aace87e2ab 100644 --- a/examples/widgets/tutorials/modelview/3_changingmodel/CMakeLists.txt +++ b/examples/widgets/tutorials/modelview/3_changingmodel/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/modelview/3_changingmodel") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mv_changingmodel @@ -18,6 +20,8 @@ add_qt_gui_executable(mv_changingmodel mymodel.cpp mymodel.h ) target_link_libraries(mv_changingmodel PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/modelview/4_headers/CMakeLists.txt b/examples/widgets/tutorials/modelview/4_headers/CMakeLists.txt index f4f9b7ae84..9d2f9cd7e8 100644 --- a/examples/widgets/tutorials/modelview/4_headers/CMakeLists.txt +++ b/examples/widgets/tutorials/modelview/4_headers/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/modelview/4_headers") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mv_headers @@ -18,6 +20,8 @@ add_qt_gui_executable(mv_headers mymodel.cpp mymodel.h ) target_link_libraries(mv_headers PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/modelview/5_edit/CMakeLists.txt b/examples/widgets/tutorials/modelview/5_edit/CMakeLists.txt index 1f70f4a0bf..50af3c39a4 100644 --- a/examples/widgets/tutorials/modelview/5_edit/CMakeLists.txt +++ b/examples/widgets/tutorials/modelview/5_edit/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/modelview/5_edit") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mv_edit @@ -19,6 +21,8 @@ add_qt_gui_executable(mv_edit mymodel.cpp mymodel.h ) target_link_libraries(mv_edit PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/modelview/6_treeview/CMakeLists.txt b/examples/widgets/tutorials/modelview/6_treeview/CMakeLists.txt index 9300b9e837..435ff71c0f 100644 --- a/examples/widgets/tutorials/modelview/6_treeview/CMakeLists.txt +++ b/examples/widgets/tutorials/modelview/6_treeview/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/modelview/6_treeview") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mv_tree @@ -18,6 +20,8 @@ add_qt_gui_executable(mv_tree mainwindow.cpp mainwindow.h ) target_link_libraries(mv_tree PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/modelview/7_selections/CMakeLists.txt b/examples/widgets/tutorials/modelview/7_selections/CMakeLists.txt index 0e397deadd..e0d591ab29 100644 --- a/examples/widgets/tutorials/modelview/7_selections/CMakeLists.txt +++ b/examples/widgets/tutorials/modelview/7_selections/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/modelview/7_selections") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mv_selections @@ -18,6 +20,8 @@ add_qt_gui_executable(mv_selections mainwindow.cpp mainwindow.h ) target_link_libraries(mv_selections PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/notepad/.prev_CMakeLists.txt b/examples/widgets/tutorials/notepad/.prev_CMakeLists.txt index 6634c8c148..32df7ad615 100644 --- a/examples/widgets/tutorials/notepad/.prev_CMakeLists.txt +++ b/examples/widgets/tutorials/notepad/.prev_CMakeLists.txt @@ -1,49 +1,66 @@ # Generated from notepad.pro. -##################################################################### -## notepad Binary: -##################################################################### - -add_qt_executable(notepad - GUI - OUTPUT_DIRECTORY "${INSTALL_EXAMPLESDIR}/widgets/tutorials/notepad" - INSTALL_DIRECTORY "${INSTALL_EXAMPLESDIR}/widgets/tutorials/notepad" - SOURCES - main.cpp - notepad.cpp notepad.h notepad.ui - ENABLE_AUTOGEN_TOOLS - uic +cmake_minimum_required(VERSION 3.14) +project(notepad LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/notepad") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) + +add_qt_gui_executable(notepad + main.cpp + notepad.cpp notepad.h notepad.ui +) +target_link_libraries(notepad PUBLIC + Qt::Core + Qt::Gui ) + # Resources: -add_qt_resource(notepad "notepad" PREFIX "/" FILES - images/bold.png - images/copy.png - images/create.png - images/cut.png - images/edit_redo.png - images/edit_undo.png - images/exit.png - images/font.png - images/info.png - images/italic.png - images/new.png - images/open.png - images/paste.png - images/pencil.png - images/print.png - images/save.png - images/save_as.png - images/underline.png) - - -#### Keys ignored in scope 1:.:.:notepad.pro:<TRUE>: -# TEMPLATE = "app" - -## Scopes: -##################################################################### - -extend_target(notepad CONDITION TARGET Qt::PrintSupport - PUBLIC_LIBRARIES +set(notepad_resource_files + "images/bold.png" + "images/copy.png" + "images/create.png" + "images/cut.png" + "images/edit_redo.png" + "images/edit_undo.png" + "images/exit.png" + "images/font.png" + "images/info.png" + "images/italic.png" + "images/new.png" + "images/open.png" + "images/paste.png" + "images/pencil.png" + "images/print.png" + "images/save.png" + "images/save_as.png" + "images/underline.png" +) + +qt6_add_resources(notepad "notepad" + PREFIX + "/" + FILES + ${notepad_resource_files} +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(notepad PUBLIC Qt::PrintSupport + ) +endif() + +install(TARGETS notepad + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" ) diff --git a/examples/widgets/tutorials/notepad/CMakeLists.txt b/examples/widgets/tutorials/notepad/CMakeLists.txt index 8a9b39871e..2a277efb26 100644 --- a/examples/widgets/tutorials/notepad/CMakeLists.txt +++ b/examples/widgets/tutorials/notepad/CMakeLists.txt @@ -3,31 +3,62 @@ cmake_minimum_required(VERSION 3.14) project(notepad LANGUAGES CXX) -find_package(Qt6 COMPONENTS Widgets) # special case: add -find_package(Qt6 COMPONENTS PrintSupport) # special case: add - set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/notepad") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS PrintSupport) # special case: add add_qt_gui_executable(notepad main.cpp - notepad.cpp notepad.h notepad.qrc notepad.ui + notepad.cpp notepad.h notepad.ui ) -# special case begin target_link_libraries(notepad PUBLIC - Qt::Widgets + Qt::Core + Qt::Gui +) + + +# Resources: +set(notepad_resource_files + "images/bold.png" + "images/copy.png" + "images/create.png" + "images/cut.png" + "images/edit_redo.png" + "images/edit_undo.png" + "images/exit.png" + "images/font.png" + "images/info.png" + "images/italic.png" + "images/new.png" + "images/open.png" + "images/paste.png" + "images/pencil.png" + "images/print.png" + "images/save.png" + "images/save_as.png" + "images/underline.png" ) -if (TARGET Qt::PrintSupport) + +qt6_add_resources(notepad "notepad" + PREFIX + "/" + FILES + ${notepad_resource_files} +) + +if(TARGET Qt::PrintSupport) target_link_libraries(notepad PUBLIC Qt::PrintSupport ) endif() -# special case end install(TARGETS notepad RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/tutorials/widgets/childwidget/CMakeLists.txt b/examples/widgets/tutorials/widgets/childwidget/CMakeLists.txt index cfbb5fe430..4119f69fd5 100644 --- a/examples/widgets/tutorials/widgets/childwidget/CMakeLists.txt +++ b/examples/widgets/tutorials/widgets/childwidget/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/widgets/childwidget") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(childwidget main.cpp ) target_link_libraries(childwidget PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/widgets/nestedlayouts/CMakeLists.txt b/examples/widgets/tutorials/widgets/nestedlayouts/CMakeLists.txt index 4bdde3b10c..75387bd9e5 100644 --- a/examples/widgets/tutorials/widgets/nestedlayouts/CMakeLists.txt +++ b/examples/widgets/tutorials/widgets/nestedlayouts/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/widgets/nestedlayouts") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(nestedlayouts main.cpp ) target_link_libraries(nestedlayouts PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/widgets/toplevel/CMakeLists.txt b/examples/widgets/tutorials/widgets/toplevel/CMakeLists.txt index c9636c17b4..6d2bdb5ba5 100644 --- a/examples/widgets/tutorials/widgets/toplevel/CMakeLists.txt +++ b/examples/widgets/tutorials/widgets/toplevel/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/widgets/toplevel") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(toplevel main.cpp ) target_link_libraries(toplevel PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/tutorials/widgets/windowlayout/CMakeLists.txt b/examples/widgets/tutorials/widgets/windowlayout/CMakeLists.txt index 6e247de6b6..07b50185f3 100644 --- a/examples/widgets/tutorials/widgets/windowlayout/CMakeLists.txt +++ b/examples/widgets/tutorials/widgets/windowlayout/CMakeLists.txt @@ -9,14 +9,18 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/tutorials/widgets/windowlayout") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(windowlayout main.cpp ) target_link_libraries(windowlayout PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets.pro b/examples/widgets/widgets.pro index d975ea8307..99e1c71594 100644 --- a/examples/widgets/widgets.pro +++ b/examples/widgets/widgets.pro @@ -9,6 +9,7 @@ SUBDIRS = \ dialogs \ draganddrop \ effects \ + gallery \ gestures \ graphicsview \ itemviews \ diff --git a/examples/widgets/widgets/analogclock/CMakeLists.txt b/examples/widgets/widgets/analogclock/CMakeLists.txt index 0c940d9bb5..8f7639df70 100644 --- a/examples/widgets/widgets/analogclock/CMakeLists.txt +++ b/examples/widgets/widgets/analogclock/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/analogclock") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(analogclock @@ -18,6 +20,8 @@ add_qt_gui_executable(analogclock main.cpp ) target_link_libraries(analogclock PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/calculator/CMakeLists.txt b/examples/widgets/widgets/calculator/CMakeLists.txt index 1f5b0a50ea..89ee6e9ccb 100644 --- a/examples/widgets/widgets/calculator/CMakeLists.txt +++ b/examples/widgets/widgets/calculator/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/calculator") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(calculator @@ -19,6 +21,8 @@ add_qt_gui_executable(calculator main.cpp ) target_link_libraries(calculator PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/calendarwidget/CMakeLists.txt b/examples/widgets/widgets/calendarwidget/CMakeLists.txt index 7295b45dc5..00c1b8154a 100644 --- a/examples/widgets/widgets/calendarwidget/CMakeLists.txt +++ b/examples/widgets/widgets/calendarwidget/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/calendarwidget") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(calendarwidget @@ -18,6 +20,8 @@ add_qt_gui_executable(calendarwidget window.cpp window.h ) target_link_libraries(calendarwidget PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/charactermap/CMakeLists.txt b/examples/widgets/widgets/charactermap/CMakeLists.txt index f397213830..8ecaf5af20 100644 --- a/examples/widgets/widgets/charactermap/CMakeLists.txt +++ b/examples/widgets/widgets/charactermap/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/charactermap") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(charactermap @@ -19,6 +21,8 @@ add_qt_gui_executable(charactermap mainwindow.cpp mainwindow.h ) target_link_libraries(charactermap PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/charactermap/mainwindow.cpp b/examples/widgets/widgets/charactermap/mainwindow.cpp index b0f9705c21..702b50156b 100644 --- a/examples/widgets/widgets/charactermap/mainwindow.cpp +++ b/examples/widgets/widgets/charactermap/mainwindow.cpp @@ -201,7 +201,7 @@ void MainWindow::findStyles(const QFont &font) void MainWindow::filterChanged(int f) { const QFontComboBox::FontFilter filter = - filterCombo->itemData(f).value<QFontComboBox::FontFilter>(); + qvariant_cast<QFontComboBox::FontFilter>(filterCombo->itemData(f)); fontCombo->setFontFilters(filter); statusBar()->showMessage(tr("%n font(s) found", nullptr, fontCombo->count())); } diff --git a/examples/widgets/widgets/codeeditor/CMakeLists.txt b/examples/widgets/widgets/codeeditor/CMakeLists.txt index 0d1f036d79..790b9bc103 100644 --- a/examples/widgets/widgets/codeeditor/CMakeLists.txt +++ b/examples/widgets/widgets/codeeditor/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/codeeditor") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(codeeditor @@ -18,6 +20,8 @@ add_qt_gui_executable(codeeditor main.cpp ) target_link_libraries(codeeditor PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/digitalclock/CMakeLists.txt b/examples/widgets/widgets/digitalclock/CMakeLists.txt index 50f7233004..904c53890d 100644 --- a/examples/widgets/widgets/digitalclock/CMakeLists.txt +++ b/examples/widgets/widgets/digitalclock/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/digitalclock") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(digitalclock @@ -18,6 +20,8 @@ add_qt_gui_executable(digitalclock main.cpp ) target_link_libraries(digitalclock PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/elidedlabel/CMakeLists.txt b/examples/widgets/widgets/elidedlabel/CMakeLists.txt index d5ad7791fd..b9841c00f1 100644 --- a/examples/widgets/widgets/elidedlabel/CMakeLists.txt +++ b/examples/widgets/widgets/elidedlabel/CMakeLists.txt @@ -9,7 +9,7 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/elidedlabel") find_package(Qt6 COMPONENTS Core) find_package(Qt6 COMPONENTS Gui) diff --git a/examples/widgets/widgets/groupbox/CMakeLists.txt b/examples/widgets/widgets/groupbox/CMakeLists.txt index 74af580846..dbccf0b222 100644 --- a/examples/widgets/widgets/groupbox/CMakeLists.txt +++ b/examples/widgets/widgets/groupbox/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/groupbox") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(groupbox @@ -18,6 +20,8 @@ add_qt_gui_executable(groupbox window.cpp window.h ) target_link_libraries(groupbox PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/icons/.prev_CMakeLists.txt b/examples/widgets/widgets/icons/.prev_CMakeLists.txt new file mode 100644 index 0000000000..01cc94abdb --- /dev/null +++ b/examples/widgets/widgets/icons/.prev_CMakeLists.txt @@ -0,0 +1,39 @@ +# Generated from icons.pro. + +cmake_minimum_required(VERSION 3.14) +project(icons LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/icons") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(icons + iconpreviewarea.cpp iconpreviewarea.h + iconsizespinbox.cpp iconsizespinbox.h + imagedelegate.cpp imagedelegate.h + main.cpp + mainwindow.cpp mainwindow.h +) +target_compile_definitions(icons PUBLIC + SRCDIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/\\\" +) + +target_link_libraries(icons PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +install(TARGETS icons + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/widgets/icons/CMakeLists.txt b/examples/widgets/widgets/icons/CMakeLists.txt index 607c430b8c..f154c534f9 100644 --- a/examples/widgets/widgets/icons/CMakeLists.txt +++ b/examples/widgets/widgets/icons/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/icons") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(icons @@ -21,11 +23,15 @@ add_qt_gui_executable(icons mainwindow.cpp mainwindow.h ) target_compile_definitions(icons PUBLIC - SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}" + SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}" # special case ) + target_link_libraries(icons PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + install(TARGETS icons RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/widgets/icons/imagedelegate.cpp b/examples/widgets/widgets/icons/imagedelegate.cpp index 39c2e43134..9f1e19c9eb 100644 --- a/examples/widgets/widgets/icons/imagedelegate.cpp +++ b/examples/widgets/widgets/icons/imagedelegate.cpp @@ -55,9 +55,8 @@ //! [0] ImageDelegate::ImageDelegate(QObject *parent) - : QItemDelegate(parent) -{ -} + : QStyledItemDelegate(parent) +{} //! [0] //! [1] @@ -71,7 +70,7 @@ QWidget *ImageDelegate::createEditor(QWidget *parent, else if (index.column() == 2) comboBox->addItems(IconPreviewArea::iconStateNames()); - connect(comboBox, QOverload<int>::of(&QComboBox::activated), + connect(comboBox, &QComboBox::activated, this, &ImageDelegate::emitCommitData); return comboBox; diff --git a/examples/widgets/widgets/icons/imagedelegate.h b/examples/widgets/widgets/icons/imagedelegate.h index 3b76b78339..9d65304e2c 100644 --- a/examples/widgets/widgets/icons/imagedelegate.h +++ b/examples/widgets/widgets/icons/imagedelegate.h @@ -51,10 +51,10 @@ #ifndef IMAGEDELEGATE_H #define IMAGEDELEGATE_H -#include <QItemDelegate> +#include <QStyledItemDelegate> //! [0] -class ImageDelegate : public QItemDelegate +class ImageDelegate : public QStyledItemDelegate { Q_OBJECT @@ -72,7 +72,7 @@ public: //! [1] //! [2] private slots: void emitCommitData(); -}; //! [2] +}; #endif diff --git a/examples/widgets/widgets/icons/mainwindow.cpp b/examples/widgets/widgets/icons/mainwindow.cpp index f342c18c4c..be92f83c75 100644 --- a/examples/widgets/widgets/icons/mainwindow.cpp +++ b/examples/widgets/widgets/icons/mainwindow.cpp @@ -172,15 +172,16 @@ void MainWindow::changeStyle(bool checked) //! [4] //! [5] -void MainWindow::changeSize(int id, bool checked) +void MainWindow::changeSize(QAbstractButton *button, bool checked) { if (!checked) return; - const bool other = id == int(OtherSize); + const int index = sizeButtonGroup->id(button); + const bool other = index == int(OtherSize); const int extent = other ? otherSpinBox->value() - : QApplication::style()->pixelMetric(static_cast<QStyle::PixelMetric>(id)); + : QApplication::style()->pixelMetric(static_cast<QStyle::PixelMetric>(index)); previewArea->setSize(QSize(extent, extent)); otherSpinBox->setEnabled(other); @@ -188,7 +189,7 @@ void MainWindow::changeSize(int id, bool checked) void MainWindow::triggerChangeSize() { - changeSize(sizeButtonGroup->checkedId(), true); + changeSize(sizeButtonGroup->checkedButton(), true); } //! [5] @@ -216,16 +217,13 @@ void MainWindow::changeIcon() QImage image(fileName); if (!image.isNull()) icon.addPixmap(QPixmap::fromImage(image), mode, state); -//! [8] //! [9] +//! [8] } -//! [9] //! [10] } -//! [10] - //! [11] previewArea->setIcon(icon); -} //! [11] +} void MainWindow::addSampleImages() { @@ -280,17 +278,15 @@ void MainWindow::loadImages(const QStringList &fileNames) .arg(QDir::toNativeSeparators(fileInfo.absolutePath()), fileInfo.fileName()) .arg(fileInfo2x.exists() ? fileInfo2x.fileName() : tr("<None>")) .arg(image.width()).arg(image.height()); -//! [13] //! [14] QTableWidgetItem *fileItem = new QTableWidgetItem(imageName); fileItem->setData(Qt::UserRole, fileName); fileItem->setIcon(QPixmap::fromImage(image)); fileItem->setFlags((fileItem->flags() | Qt::ItemIsUserCheckable) & ~Qt::ItemIsEditable); fileItem->setToolTip(toolTip); -//! [14] +//! [13] //! [15] QIcon::Mode mode = QIcon::Normal; -//! [15] //! [16] QIcon::State state = QIcon::Off; if (guessModeStateAct->isChecked()) { if (imageName.contains(QLatin1String("_act"), Qt::CaseInsensitive)) @@ -302,13 +298,11 @@ void MainWindow::loadImages(const QStringList &fileNames) if (imageName.contains(QLatin1String("_on"), Qt::CaseInsensitive)) state = QIcon::On; -//! [16] //! [17] +//! [15] } -//! [17] //! [18] imagesTable->setItem(row, 0, fileItem); -//! [18] //! [19] QTableWidgetItem *modeItem = new QTableWidgetItem(IconPreviewArea::iconModeNames().at(IconPreviewArea::iconModes().indexOf(mode))); modeItem->setToolTip(toolTip); @@ -321,9 +315,9 @@ void MainWindow::loadImages(const QStringList &fileNames) imagesTable->openPersistentEditor(stateItem); fileItem->setCheckState(Qt::Checked); +//! [18] } } -//! [19] void MainWindow::useHighDpiPixmapsChanged(int checkState) { @@ -350,9 +344,7 @@ QWidget *MainWindow::createImagesGroupBox() //! [21] //! [22] - QStringList labels; -//! [22] //! [23] - labels << tr("Image") << tr("Mode") << tr("State"); + const QStringList labels({tr("Image"), tr("Mode"), tr("State")}); imagesTable->horizontalHeader()->setDefaultSectionSize(90); imagesTable->setColumnCount(3); @@ -361,18 +353,17 @@ QWidget *MainWindow::createImagesGroupBox() imagesTable->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Fixed); imagesTable->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Fixed); imagesTable->verticalHeader()->hide(); -//! [23] +//! [22] //! [24] connect(imagesTable, &QTableWidget::itemChanged, -//! [24] //! [25] this, &MainWindow::changeIcon); QVBoxLayout *layout = new QVBoxLayout(imagesGroupBox); layout->addWidget(imagesTable); return imagesGroupBox; +//! [24] } -//! [25] //! [26] QWidget *MainWindow::createIconSizeGroupBox() @@ -382,7 +373,7 @@ QWidget *MainWindow::createIconSizeGroupBox() sizeButtonGroup = new QButtonGroup(this); sizeButtonGroup->setExclusive(true); - connect(sizeButtonGroup, QOverload<int, bool>::of(&QButtonGroup::buttonToggled), + connect(sizeButtonGroup, &QButtonGroup::buttonToggled, this, &MainWindow::changeSize); QRadioButton *smallRadioButton = new QRadioButton; @@ -410,7 +401,7 @@ QWidget *MainWindow::createIconSizeGroupBox() //! [26] //! [27] - connect(otherSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(otherSpinBox, &QSpinBox::valueChanged, this, &MainWindow::triggerChangeSize); QHBoxLayout *otherSizeLayout = new QHBoxLayout; @@ -428,8 +419,8 @@ QWidget *MainWindow::createIconSizeGroupBox() layout->addLayout(otherSizeLayout, 3, 0, 1, 2); layout->setRowStretch(4, 1); return iconSizeGroupBox; -} //! [27] +} void MainWindow::screenChanged() { diff --git a/examples/widgets/widgets/icons/mainwindow.h b/examples/widgets/widgets/icons/mainwindow.h index c67d828cab..9250711ecc 100644 --- a/examples/widgets/widgets/icons/mainwindow.h +++ b/examples/widgets/widgets/icons/mainwindow.h @@ -62,6 +62,7 @@ class QActionGroup; class QLabel; class QButtonGroup; class QTableWidget; +class QAbstractButton; QT_END_NAMESPACE class IconPreviewArea; class IconSizeSpinBox; @@ -81,7 +82,7 @@ public: private slots: void about(); void changeStyle(bool checked); - void changeSize(int, bool); + void changeSize(QAbstractButton *button, bool); void triggerChangeSize(); void changeIcon(); void addSampleImages(); diff --git a/examples/widgets/widgets/imageviewer/.prev_CMakeLists.txt b/examples/widgets/widgets/imageviewer/.prev_CMakeLists.txt new file mode 100644 index 0000000000..d5911d117f --- /dev/null +++ b/examples/widgets/widgets/imageviewer/.prev_CMakeLists.txt @@ -0,0 +1,38 @@ +# Generated from imageviewer.pro. + +cmake_minimum_required(VERSION 3.14) +project(imageviewer LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/imageviewer") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(imageviewer + imageviewer.cpp imageviewer.h + main.cpp +) +target_link_libraries(imageviewer PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(imageviewer PUBLIC + Qt::PrintSupport + ) +endif() + +install(TARGETS imageviewer + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/widgets/imageviewer/CMakeLists.txt b/examples/widgets/widgets/imageviewer/CMakeLists.txt index 88f28a6dad..fefccbbd1b 100644 --- a/examples/widgets/widgets/imageviewer/CMakeLists.txt +++ b/examples/widgets/widgets/imageviewer/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/imageviewer") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS PrintSupport) # special case @@ -19,6 +21,8 @@ add_qt_gui_executable(imageviewer main.cpp ) target_link_libraries(imageviewer PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) # special case begin @@ -27,6 +31,12 @@ if (TARGET Qt::PrintSupport) endif() # special case end +if(TARGET Qt::PrintSupport) + target_link_libraries(imageviewer PUBLIC + Qt::PrintSupport + ) +endif() + install(TARGETS imageviewer RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/widgets/lineedits/CMakeLists.txt b/examples/widgets/widgets/lineedits/CMakeLists.txt index cd616c31e3..ca9393c323 100644 --- a/examples/widgets/widgets/lineedits/CMakeLists.txt +++ b/examples/widgets/widgets/lineedits/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/lineedits") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(lineedits @@ -18,6 +20,8 @@ add_qt_gui_executable(lineedits window.cpp window.h ) target_link_libraries(lineedits PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/lineedits/window.cpp b/examples/widgets/widgets/lineedits/window.cpp index bb9396411a..765f867deb 100644 --- a/examples/widgets/widgets/lineedits/window.cpp +++ b/examples/widgets/widgets/lineedits/window.cpp @@ -127,15 +127,15 @@ Window::Window(QWidget *parent) //! [4] //! [5] - connect(echoComboBox, QOverload<int>::of(&QComboBox::activated), + connect(echoComboBox, &QComboBox::activated, this, &Window::echoChanged); - connect(validatorComboBox, QOverload<int>::of(&QComboBox::activated), + connect(validatorComboBox, &QComboBox::activated, this, &Window::validatorChanged); - connect(alignmentComboBox, QOverload<int>::of(&QComboBox::activated), + connect(alignmentComboBox, &QComboBox::activated, this, &Window::alignmentChanged); - connect(inputMaskComboBox, QOverload<int>::of(&QComboBox::activated), + connect(inputMaskComboBox, &QComboBox::activated, this, &Window::inputMaskChanged); - connect(accessComboBox, QOverload<int>::of(&QComboBox::activated), + connect(accessComboBox, &QComboBox::activated, this, &Window::accessChanged); //! [5] diff --git a/examples/widgets/widgets/mousebuttons/CMakeLists.txt b/examples/widgets/widgets/mousebuttons/CMakeLists.txt index 103d3aa215..625e068cc0 100644 --- a/examples/widgets/widgets/mousebuttons/CMakeLists.txt +++ b/examples/widgets/widgets/mousebuttons/CMakeLists.txt @@ -9,9 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/mousebuttons") find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(mousebuttons @@ -20,6 +21,7 @@ add_qt_gui_executable(mousebuttons ) target_link_libraries(mousebuttons PUBLIC Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/movie/CMakeLists.txt b/examples/widgets/widgets/movie/CMakeLists.txt index 8a0d3f3d2f..140fff2cc8 100644 --- a/examples/widgets/widgets/movie/CMakeLists.txt +++ b/examples/widgets/widgets/movie/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/movie") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(movie @@ -18,6 +20,8 @@ add_qt_gui_executable(movie movieplayer.cpp movieplayer.h ) target_link_libraries(movie PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/movie/movieplayer.cpp b/examples/widgets/widgets/movie/movieplayer.cpp index 41cd7923ee..76849268ab 100644 --- a/examples/widgets/widgets/movie/movieplayer.cpp +++ b/examples/widgets/widgets/movie/movieplayer.cpp @@ -81,7 +81,7 @@ MoviePlayer::MoviePlayer(QWidget *parent) connect(movie, &QMovie::stateChanged, this, &MoviePlayer::updateButtons); connect(fitCheckBox, &QCheckBox::clicked, this, &MoviePlayer::fitToWindow); connect(frameSlider, &QSlider::valueChanged, this, &MoviePlayer::goToFrame); - connect(speedSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(speedSpinBox, &QSpinBox::valueChanged, movie, &QMovie::setSpeed); mainLayout = new QVBoxLayout; diff --git a/examples/widgets/widgets/scribble/.prev_CMakeLists.txt b/examples/widgets/widgets/scribble/.prev_CMakeLists.txt new file mode 100644 index 0000000000..dff1bccec7 --- /dev/null +++ b/examples/widgets/widgets/scribble/.prev_CMakeLists.txt @@ -0,0 +1,39 @@ +# Generated from scribble.pro. + +cmake_minimum_required(VERSION 3.14) +project(scribble LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/scribble") + +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) +find_package(Qt6 COMPONENTS Widgets) + +add_qt_gui_executable(scribble + main.cpp + mainwindow.cpp mainwindow.h + scribblearea.cpp scribblearea.h +) +target_link_libraries(scribble PUBLIC + Qt::Core + Qt::Gui + Qt::Widgets +) + +if(TARGET Qt::PrintSupport) + target_link_libraries(scribble PUBLIC + Qt::PrintSupport + ) +endif() + +install(TARGETS scribble + RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" + BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" + LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" +) diff --git a/examples/widgets/widgets/scribble/CMakeLists.txt b/examples/widgets/widgets/scribble/CMakeLists.txt index 6032e9f58b..ca2f7b590e 100644 --- a/examples/widgets/widgets/scribble/CMakeLists.txt +++ b/examples/widgets/widgets/scribble/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/scribble") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS PrintSupport) # special case @@ -20,6 +22,8 @@ add_qt_gui_executable(scribble scribblearea.cpp scribblearea.h ) target_link_libraries(scribble PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) # special case begin @@ -28,6 +32,12 @@ if (TARGET Qt::PrintSupport) endif() # special case end +if(TARGET Qt::PrintSupport) + target_link_libraries(scribble PUBLIC + Qt::PrintSupport + ) +endif() + install(TARGETS scribble RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/widgets/shapedclock/CMakeLists.txt b/examples/widgets/widgets/shapedclock/CMakeLists.txt index 3bc86df1d9..211c0cc432 100644 --- a/examples/widgets/widgets/shapedclock/CMakeLists.txt +++ b/examples/widgets/widgets/shapedclock/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/shapedclock") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(shapedclock @@ -18,6 +20,8 @@ add_qt_gui_executable(shapedclock shapedclock.cpp shapedclock.h ) target_link_libraries(shapedclock PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/shapedclock/shapedclock.cpp b/examples/widgets/widgets/shapedclock/shapedclock.cpp index 3c78f4da89..673d1a218f 100644 --- a/examples/widgets/widgets/shapedclock/shapedclock.cpp +++ b/examples/widgets/widgets/shapedclock/shapedclock.cpp @@ -61,6 +61,7 @@ ShapedClock::ShapedClock(QWidget *parent) : QWidget(parent, Qt::FramelessWindowHint | Qt::WindowSystemMenuHint) { + setAttribute(Qt::WA_TranslucentBackground); QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, QOverload<>::of(&ShapedClock::update)); timer->start(1000); @@ -123,6 +124,10 @@ void ShapedClock::paintEvent(QPaintEvent *) painter.scale(side / 200.0, side / 200.0); painter.setPen(Qt::NoPen); + painter.setBrush(palette().window()); + painter.drawEllipse(QPoint(0, 0), 98, 98); + + painter.setPen(Qt::NoPen); painter.setBrush(hourColor); painter.save(); @@ -168,6 +173,6 @@ void ShapedClock::resizeEvent(QResizeEvent * /* event */) //! [5] QSize ShapedClock::sizeHint() const { - return QSize(100, 100); + return QSize(200, 200); } //! [5] diff --git a/examples/widgets/widgets/sliders/CMakeLists.txt b/examples/widgets/widgets/sliders/CMakeLists.txt index b4f2cfd62b..a47ada2d48 100644 --- a/examples/widgets/widgets/sliders/CMakeLists.txt +++ b/examples/widgets/widgets/sliders/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/sliders") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(sliders @@ -19,6 +21,8 @@ add_qt_gui_executable(sliders window.cpp window.h ) target_link_libraries(sliders PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/sliders/window.cpp b/examples/widgets/widgets/sliders/window.cpp index 4a28a61f3d..916f206379 100644 --- a/examples/widgets/widgets/sliders/window.cpp +++ b/examples/widgets/widgets/sliders/window.cpp @@ -78,7 +78,7 @@ Window::Window(QWidget *parent) verticalSliders, &SlidersGroup::setValue); connect(verticalSliders, &SlidersGroup::valueChanged, valueSpinBox, &QSpinBox::setValue); - connect(valueSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(valueSpinBox, &QSpinBox::valueChanged, horizontalSliders, &SlidersGroup::setValue); QHBoxLayout *layout = new QHBoxLayout; @@ -126,16 +126,16 @@ void Window::createControls(const QString &title) orientationCombo->addItem(tr("Vertical slider-like widgets")); //! [6] //! [7] - connect(orientationCombo, QOverload<int>::of(&QComboBox::activated), + connect(orientationCombo, &QComboBox::activated, //! [7] //! [8] stackedWidget, &QStackedWidget::setCurrentIndex); - connect(minimumSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(minimumSpinBox, &QSpinBox::valueChanged, horizontalSliders, &SlidersGroup::setMinimum); - connect(minimumSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(minimumSpinBox, &QSpinBox::valueChanged, verticalSliders, &SlidersGroup::setMinimum); - connect(maximumSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(maximumSpinBox, &QSpinBox::valueChanged, horizontalSliders, &SlidersGroup::setMaximum); - connect(maximumSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(maximumSpinBox, &QSpinBox::valueChanged, verticalSliders, &SlidersGroup::setMaximum); connect(invertedAppearance, &QCheckBox::toggled, horizontalSliders, &SlidersGroup::invertAppearance); diff --git a/examples/widgets/widgets/spinboxes/CMakeLists.txt b/examples/widgets/widgets/spinboxes/CMakeLists.txt index e4d63153b9..050c4a8866 100644 --- a/examples/widgets/widgets/spinboxes/CMakeLists.txt +++ b/examples/widgets/widgets/spinboxes/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/spinboxes") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(spinboxes @@ -18,6 +20,8 @@ add_qt_gui_executable(spinboxes window.cpp window.h ) target_link_libraries(spinboxes PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/spinboxes/window.cpp b/examples/widgets/widgets/spinboxes/window.cpp index 40c02aba70..6aeb5a8f69 100644 --- a/examples/widgets/widgets/spinboxes/window.cpp +++ b/examples/widgets/widgets/spinboxes/window.cpp @@ -262,7 +262,7 @@ void Window::createDoubleSpinBoxes() priceSpinBox->setPrefix("$"); priceSpinBox->setValue(99.99); - connect(precisionSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + connect(precisionSpinBox, &QSpinBox::valueChanged, //! [17] this, &Window::changePrecision); diff --git a/examples/widgets/widgets/styles/CMakeLists.txt b/examples/widgets/widgets/styles/CMakeLists.txt index 00c0481ce7..fc48780487 100644 --- a/examples/widgets/widgets/styles/CMakeLists.txt +++ b/examples/widgets/widgets/styles/CMakeLists.txt @@ -9,20 +9,37 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/styles") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(styles main.cpp norwegianwoodstyle.cpp norwegianwoodstyle.h - styles.qrc widgetgallery.cpp widgetgallery.h ) target_link_libraries(styles PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(styles_resource_files + "images/woodbackground.png" + "images/woodbutton.png" +) + +qt6_add_resources(styles "styles" + PREFIX + "/" + FILES + ${styles_resource_files} +) + install(TARGETS styles RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/widgets/styles/main.cpp b/examples/widgets/widgets/styles/main.cpp index d340719984..471589d3ad 100644 --- a/examples/widgets/widgets/styles/main.cpp +++ b/examples/widgets/widgets/styles/main.cpp @@ -50,12 +50,15 @@ #include <QApplication> +#include "norwegianwoodstyle.h" #include "widgetgallery.h" int main(int argc, char *argv[]) { Q_INIT_RESOURCE(styles); + QApplication::setStyle(new NorwegianWoodStyle); + QApplication app(argc, argv); WidgetGallery gallery; gallery.show(); diff --git a/examples/widgets/widgets/styles/norwegianwoodstyle.cpp b/examples/widgets/widgets/styles/norwegianwoodstyle.cpp index 0f614a2e9a..31150cd994 100644 --- a/examples/widgets/widgets/styles/norwegianwoodstyle.cpp +++ b/examples/widgets/widgets/styles/norwegianwoodstyle.cpp @@ -58,45 +58,52 @@ NorwegianWoodStyle::NorwegianWoodStyle() : QProxyStyle(QStyleFactory::create("windows")) { + setObjectName("NorwegianWood"); } //! [0] -void NorwegianWoodStyle::polish(QPalette &palette) +QPalette NorwegianWoodStyle::standardPalette() const { - QColor brown(212, 140, 95); - QColor beige(236, 182, 120); - QColor slightlyOpaqueBlack(0, 0, 0, 63); - - QImage backgroundImage(":/images/woodbackground.png"); - QImage buttonImage(":/images/woodbutton.png"); - QImage midImage = buttonImage.convertToFormat(QImage::Format_RGB32); - - QPainter painter; - painter.begin(&midImage); - painter.setPen(Qt::NoPen); - painter.fillRect(midImage.rect(), slightlyOpaqueBlack); - painter.end(); -//! [0] + if (!m_standardPalette.isBrushSet(QPalette::Disabled, QPalette::Mid)) { + QColor brown(212, 140, 95); + QColor beige(236, 182, 120); + QColor slightlyOpaqueBlack(0, 0, 0, 63); + + QImage backgroundImage(":/images/woodbackground.png"); + QImage buttonImage(":/images/woodbutton.png"); + QImage midImage = buttonImage.convertToFormat(QImage::Format_RGB32); + + QPainter painter; + painter.begin(&midImage); + painter.setPen(Qt::NoPen); + painter.fillRect(midImage.rect(), slightlyOpaqueBlack); + painter.end(); + //! [0] + + //! [1] + QPalette palette(brown); + + palette.setBrush(QPalette::BrightText, Qt::white); + palette.setBrush(QPalette::Base, beige); + palette.setBrush(QPalette::Highlight, Qt::darkGreen); + setTexture(palette, QPalette::Button, buttonImage); + setTexture(palette, QPalette::Mid, midImage); + setTexture(palette, QPalette::Window, backgroundImage); + + QBrush brush = palette.window(); + brush.setColor(brush.color().darker()); + + palette.setBrush(QPalette::Disabled, QPalette::WindowText, brush); + palette.setBrush(QPalette::Disabled, QPalette::Text, brush); + palette.setBrush(QPalette::Disabled, QPalette::ButtonText, brush); + palette.setBrush(QPalette::Disabled, QPalette::Base, brush); + palette.setBrush(QPalette::Disabled, QPalette::Button, brush); + palette.setBrush(QPalette::Disabled, QPalette::Mid, brush); + + m_standardPalette = palette; + } -//! [1] - palette = QPalette(brown); - - palette.setBrush(QPalette::BrightText, Qt::white); - palette.setBrush(QPalette::Base, beige); - palette.setBrush(QPalette::Highlight, Qt::darkGreen); - setTexture(palette, QPalette::Button, buttonImage); - setTexture(palette, QPalette::Mid, midImage); - setTexture(palette, QPalette::Window, backgroundImage); - - QBrush brush = palette.window(); - brush.setColor(brush.color().darker()); - - palette.setBrush(QPalette::Disabled, QPalette::WindowText, brush); - palette.setBrush(QPalette::Disabled, QPalette::Text, brush); - palette.setBrush(QPalette::Disabled, QPalette::ButtonText, brush); - palette.setBrush(QPalette::Disabled, QPalette::Base, brush); - palette.setBrush(QPalette::Disabled, QPalette::Button, brush); - palette.setBrush(QPalette::Disabled, QPalette::Mid, brush); + return m_standardPalette; } //! [1] diff --git a/examples/widgets/widgets/styles/norwegianwoodstyle.h b/examples/widgets/widgets/styles/norwegianwoodstyle.h index 5a1783eb4d..62ca502d05 100644 --- a/examples/widgets/widgets/styles/norwegianwoodstyle.h +++ b/examples/widgets/widgets/styles/norwegianwoodstyle.h @@ -66,7 +66,8 @@ class NorwegianWoodStyle : public QProxyStyle public: NorwegianWoodStyle(); - void polish(QPalette &palette) override; + QPalette standardPalette() const override; + void polish(QWidget *widget) override; void unpolish(QWidget *widget) override; int pixelMetric(PixelMetric metric, const QStyleOption *option, @@ -82,6 +83,7 @@ private: static void setTexture(QPalette &palette, QPalette::ColorRole role, const QImage &image); static QPainterPath roundRectPath(const QRect &rect); + mutable QPalette m_standardPalette; }; //! [0] diff --git a/examples/widgets/widgets/styles/widgetgallery.cpp b/examples/widgets/widgets/styles/widgetgallery.cpp index fd8f0ec2d1..bf8e93feb4 100644 --- a/examples/widgets/widgets/styles/widgetgallery.cpp +++ b/examples/widgets/widgets/styles/widgetgallery.cpp @@ -65,6 +65,7 @@ #include <QRadioButton> #include <QScrollBar> #include <QSpinBox> +#include <QStyle> #include <QStyleFactory> #include <QTableWidget> #include <QTextEdit> @@ -74,11 +75,17 @@ WidgetGallery::WidgetGallery(QWidget *parent) : QDialog(parent) { - originalPalette = QApplication::palette(); - styleComboBox = new QComboBox; - styleComboBox->addItem("NorwegianWood"); - styleComboBox->addItems(QStyleFactory::keys()); + const QString defaultStyleName = QApplication::style()->objectName(); + QStringList styleNames = QStyleFactory::keys(); + styleNames.append("NorwegianWood"); + for (int i = 1, size = styleNames.size(); i < size; ++i) { + if (defaultStyleName.compare(styleNames.at(i), Qt::CaseInsensitive) == 0) { + styleNames.swapItemsAt(0, i); + break; + } + } + styleComboBox->addItems(styleNames); styleLabel = new QLabel(tr("&Style:")); styleLabel->setBuddy(styleComboBox); @@ -134,7 +141,7 @@ WidgetGallery::WidgetGallery(QWidget *parent) setLayout(mainLayout); setWindowTitle(tr("Styles")); - changeStyle("NorwegianWood"); + styleChanged(); } //! [4] @@ -142,12 +149,10 @@ WidgetGallery::WidgetGallery(QWidget *parent) void WidgetGallery::changeStyle(const QString &styleName) //! [5] //! [6] { - if (styleName == "NorwegianWood") { + if (styleName == "NorwegianWood") QApplication::setStyle(new NorwegianWoodStyle); - } else { + else QApplication::setStyle(QStyleFactory::create(styleName)); - } - changePalette(); } //! [6] @@ -155,13 +160,30 @@ void WidgetGallery::changeStyle(const QString &styleName) void WidgetGallery::changePalette() //! [7] //! [8] { - if (useStylePaletteCheckBox->isChecked()) - QApplication::setPalette(QApplication::style()->standardPalette()); - else - QApplication::setPalette(originalPalette); + QApplication::setPalette(useStylePaletteCheckBox->isChecked() ? + QApplication::style()->standardPalette() : QPalette()); } //! [8] +void WidgetGallery::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::StyleChange) + styleChanged(); +} + +void WidgetGallery::styleChanged() +{ + auto styleName = QApplication::style()->objectName(); + for (int i = 0; i < styleComboBox->count(); ++i) { + if (QString::compare(styleComboBox->itemText(i), styleName, Qt::CaseInsensitive) == 0) { + styleComboBox->setCurrentIndex(i); + break; + } + } + + changePalette(); +} + //! [9] void WidgetGallery::advanceProgressBar() //! [9] //! [10] diff --git a/examples/widgets/widgets/styles/widgetgallery.h b/examples/widgets/widgets/styles/widgetgallery.h index 9ee65c21c4..8c4c880536 100644 --- a/examples/widgets/widgets/styles/widgetgallery.h +++ b/examples/widgets/widgets/styles/widgetgallery.h @@ -80,8 +80,12 @@ class WidgetGallery : public QDialog public: WidgetGallery(QWidget *parent = nullptr); +protected: + void changeEvent(QEvent *) override; + private slots: void changeStyle(const QString &styleName); + void styleChanged(); void changePalette(); void advanceProgressBar(); @@ -92,8 +96,6 @@ private: void createBottomRightGroupBox(); void createProgressBar(); - QPalette originalPalette; - QLabel *styleLabel; QComboBox *styleComboBox; QCheckBox *useStylePaletteCheckBox; diff --git a/examples/widgets/widgets/stylesheet/CMakeLists.txt b/examples/widgets/widgets/stylesheet/CMakeLists.txt index 34b73c30f4..1cdf8ff8dd 100644 --- a/examples/widgets/widgets/stylesheet/CMakeLists.txt +++ b/examples/widgets/widgets/stylesheet/CMakeLists.txt @@ -9,20 +9,70 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/stylesheet") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(stylesheet main.cpp mainwindow.cpp mainwindow.h mainwindow.ui - stylesheet.qrc stylesheeteditor.cpp stylesheeteditor.h stylesheeteditor.ui ) target_link_libraries(stylesheet PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(stylesheet_resource_files + "images/checkbox_checked.png" + "images/checkbox_checked_hover.png" + "images/checkbox_checked_pressed.png" + "images/checkbox_unchecked.png" + "images/checkbox_unchecked_hover.png" + "images/checkbox_unchecked_pressed.png" + "images/down_arrow.png" + "images/down_arrow_disabled.png" + "images/frame.png" + "images/pagefold.png" + "images/pushbutton.png" + "images/pushbutton_hover.png" + "images/pushbutton_pressed.png" + "images/radiobutton_checked.png" + "images/radiobutton_checked_hover.png" + "images/radiobutton_checked_pressed.png" + "images/radiobutton_unchecked.png" + "images/radiobutton_unchecked_hover.png" + "images/radiobutton_unchecked_pressed.png" + "images/sizegrip.png" + "images/spindown.png" + "images/spindown_hover.png" + "images/spindown_off.png" + "images/spindown_pressed.png" + "images/spinup.png" + "images/spinup_hover.png" + "images/spinup_off.png" + "images/spinup_pressed.png" + "images/up_arrow.png" + "images/up_arrow_disabled.png" + "layouts/default.ui" + "layouts/pagefold.ui" + "qss/coffee.qss" + "qss/default.qss" + "qss/pagefold.qss" +) + +qt6_add_resources(stylesheet "stylesheet" + PREFIX + "/" + FILES + ${stylesheet_resource_files} +) + install(TARGETS stylesheet RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/widgets/tablet/CMakeLists.txt b/examples/widgets/widgets/tablet/CMakeLists.txt index b94fa63d2d..3de5d16523 100644 --- a/examples/widgets/widgets/tablet/CMakeLists.txt +++ b/examples/widgets/widgets/tablet/CMakeLists.txt @@ -9,21 +9,40 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/tablet") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(qttablet - images.qrc main.cpp mainwindow.cpp mainwindow.h tabletapplication.cpp tabletapplication.h tabletcanvas.cpp tabletcanvas.h ) target_link_libraries(qttablet PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(images_resource_files + "images/cursor-airbrush.png" + "images/cursor-eraser.png" + "images/cursor-felt-marker.png" + "images/cursor-pencil.png" +) + +qt6_add_resources(qttablet "images" + PREFIX + "/" + FILES + ${images_resource_files} +) + install(TARGETS qttablet RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/widgets/tablet/mainwindow.cpp b/examples/widgets/widgets/tablet/mainwindow.cpp index 8bcb9ada63..c5b631ee44 100644 --- a/examples/widgets/widgets/tablet/mainwindow.cpp +++ b/examples/widgets/widgets/tablet/mainwindow.cpp @@ -85,21 +85,21 @@ void MainWindow::setBrushColor() //! [2] void MainWindow::setAlphaValuator(QAction *action) { - m_canvas->setAlphaChannelValuator(action->data().value<TabletCanvas::Valuator>()); + m_canvas->setAlphaChannelValuator(qvariant_cast<TabletCanvas::Valuator>(action->data())); } //! [2] //! [3] void MainWindow::setLineWidthValuator(QAction *action) { - m_canvas->setLineWidthType(action->data().value<TabletCanvas::Valuator>()); + m_canvas->setLineWidthType(qvariant_cast<TabletCanvas::Valuator>(action->data())); } //! [3] //! [4] void MainWindow::setSaturationValuator(QAction *action) { - m_canvas->setColorSaturationValuator(action->data().value<TabletCanvas::Valuator>()); + m_canvas->setColorSaturationValuator(qvariant_cast<TabletCanvas::Valuator>(action->data())); } //! [4] diff --git a/examples/widgets/widgets/tablet/tabletcanvas.cpp b/examples/widgets/widgets/tablet/tabletcanvas.cpp index 9a8029486d..59ca608cef 100644 --- a/examples/widgets/widgets/tablet/tabletcanvas.cpp +++ b/examples/widgets/widgets/tablet/tabletcanvas.cpp @@ -53,6 +53,7 @@ #include <QCoreApplication> #include <QPainter> #include <QtMath> +#include <cstdlib> //! [0] TabletCanvas::TabletCanvas() diff --git a/examples/widgets/widgets/tetrix/CMakeLists.txt b/examples/widgets/widgets/tetrix/CMakeLists.txt index 4a12ff602b..d36b82b90b 100644 --- a/examples/widgets/widgets/tetrix/CMakeLists.txt +++ b/examples/widgets/widgets/tetrix/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/tetrix") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(tetrix @@ -20,6 +22,8 @@ add_qt_gui_executable(tetrix tetrixwindow.cpp tetrixwindow.h ) target_link_libraries(tetrix PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/tooltips/CMakeLists.txt b/examples/widgets/widgets/tooltips/CMakeLists.txt index 3e35b67ec1..9543bef5da 100644 --- a/examples/widgets/widgets/tooltips/CMakeLists.txt +++ b/examples/widgets/widgets/tooltips/CMakeLists.txt @@ -9,20 +9,38 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/tooltips") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(tooltips main.cpp shapeitem.cpp shapeitem.h sortingbox.cpp sortingbox.h - tooltips.qrc ) target_link_libraries(tooltips PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(tooltips_resource_files + "images/circle.png" + "images/square.png" + "images/triangle.png" +) + +qt6_add_resources(tooltips "tooltips" + PREFIX + "/" + FILES + ${tooltips_resource_files} +) + install(TARGETS tooltips RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/widgets/validators/CMakeLists.txt b/examples/widgets/widgets/validators/CMakeLists.txt index c4b66f0c6a..085eac4e66 100644 --- a/examples/widgets/widgets/validators/CMakeLists.txt +++ b/examples/widgets/widgets/validators/CMakeLists.txt @@ -9,21 +9,39 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/validators") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(validators ledwidget.cpp ledwidget.h localeselector.cpp localeselector.h main.cpp - validators.qrc validators.ui + validators.ui validatorwidget.cpp validatorwidget.h ) target_link_libraries(validators PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) + +# Resources: +set(validators_resource_files + "ledoff.png" + "ledon.png" +) + +qt6_add_resources(validators "validators" + PREFIX + "/" + FILES + ${validators_resource_files} +) + install(TARGETS validators RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/widgets/widgets/validators/localeselector.cpp b/examples/widgets/widgets/validators/localeselector.cpp index 1382da0cc9..3dcd04d9ff 100644 --- a/examples/widgets/widgets/validators/localeselector.cpp +++ b/examples/widgets/widgets/validators/localeselector.cpp @@ -90,6 +90,6 @@ void LocaleSelector::emitLocaleSelected(int index) QVariant v = itemData(index); if (!v.isValid()) return; - const QLocale l = v.value<QLocale>(); + const QLocale l = qvariant_cast<QLocale>(v); emit localeSelected(l); } diff --git a/examples/widgets/widgets/validators/validatorwidget.cpp b/examples/widgets/widgets/validators/validatorwidget.cpp index 9ddd640924..504eec4fe7 100644 --- a/examples/widgets/widgets/validators/validatorwidget.cpp +++ b/examples/widgets/widgets/validators/validatorwidget.cpp @@ -75,9 +75,9 @@ ValidatorWidget::ValidatorWidget(QWidget *parent) this, &ValidatorWidget::updateDoubleValidator); connect(doubleMinVal, &QDoubleSpinBox::editingFinished, this, &ValidatorWidget::updateDoubleValidator); - connect(doubleDecimals, QOverload<int>::of(&QSpinBox::valueChanged), + connect(doubleDecimals, &QSpinBox::valueChanged, this, &ValidatorWidget::updateDoubleValidator); - connect(doubleFormat, QOverload<int>::of(&QComboBox::activated), + connect(doubleFormat, &QComboBox::activated, this, &ValidatorWidget::updateDoubleValidator); connect(doubleEditor, &QLineEdit::editingFinished, doubleLedWidget, &LEDWidget::flash); diff --git a/examples/widgets/widgets/wiggly/CMakeLists.txt b/examples/widgets/widgets/wiggly/CMakeLists.txt index e2e73665ec..3d00965a34 100644 --- a/examples/widgets/widgets/wiggly/CMakeLists.txt +++ b/examples/widgets/widgets/wiggly/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/wiggly") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(wiggly @@ -19,6 +21,8 @@ add_qt_gui_executable(wiggly wigglywidget.cpp wigglywidget.h ) target_link_libraries(wiggly PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/widgets/windowflags/CMakeLists.txt b/examples/widgets/widgets/windowflags/CMakeLists.txt index 7a1f14c90c..0c2cb2b95b 100644 --- a/examples/widgets/widgets/windowflags/CMakeLists.txt +++ b/examples/widgets/widgets/windowflags/CMakeLists.txt @@ -9,8 +9,10 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/widgets/windowflags") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) add_qt_gui_executable(windowflags @@ -19,6 +21,8 @@ add_qt_gui_executable(windowflags previewwindow.cpp previewwindow.h ) target_link_libraries(windowflags PUBLIC + Qt::Core + Qt::Gui Qt::Widgets ) diff --git a/examples/widgets/windowcontainer/CMakeLists.txt b/examples/widgets/windowcontainer/CMakeLists.txt index 463fe8f8a6..399cade1c5 100644 --- a/examples/widgets/windowcontainer/CMakeLists.txt +++ b/examples/widgets/windowcontainer/CMakeLists.txt @@ -9,18 +9,25 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -set(INSTALL_EXAMPLEDIR "examples") +set(INSTALL_EXAMPLEDIR "examples/widgets/windowcontainer") +find_package(Qt6 COMPONENTS Core) +find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) +find_package(Qt6 COMPONENTS OpenGL) add_qt_gui_executable(windowcontainer - ../../gui/openglwindow/openglwindow.cpp ../../gui/openglwindow/openglwindow.h + ../../opengl/openglwindow/openglwindow.cpp ../../opengl/openglwindow/openglwindow.h windowcontainer.cpp ) target_include_directories(windowcontainer PUBLIC - ../../gui/openglwindow + ../../opengl/openglwindow ) + target_link_libraries(windowcontainer PUBLIC + Qt::Core + Qt::Gui + Qt::OpenGL Qt::Widgets ) diff --git a/examples/widgets/windowcontainer/windowcontainer.cpp b/examples/widgets/windowcontainer/windowcontainer.cpp index b920c85420..f7c146e2a9 100644 --- a/examples/widgets/windowcontainer/windowcontainer.cpp +++ b/examples/widgets/windowcontainer/windowcontainer.cpp @@ -60,7 +60,7 @@ #include <QWidget> -// Making use of the class from the opengl example in gui. +// Making use of the class from the openglwindow example class Window : public OpenGLWindow { Q_OBJECT diff --git a/examples/widgets/windowcontainer/windowcontainer.pro b/examples/widgets/windowcontainer/windowcontainer.pro index 9ac7e4a5ab..664ac938a2 100644 --- a/examples/widgets/windowcontainer/windowcontainer.pro +++ b/examples/widgets/windowcontainer/windowcontainer.pro @@ -6,4 +6,4 @@ QT += widgets target.path = $$[QT_INSTALL_EXAMPLES]/widgets/windowcontainer INSTALLS += target -include(../../gui/openglwindow/openglwindow.pri) +include(../../opengl/openglwindow/openglwindow.pri) |