1
0
mirror of https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git synced 2025-03-31 10:22:39 +08:00

Add OpenGL example

This commit is contained in:
Thibault GEFFROY 2025-02-20 12:53:00 +01:00
parent 483bb7354a
commit a6be441848
No known key found for this signature in database
GPG Key ID: 30B5D581E60332E7
5 changed files with 123 additions and 0 deletions

View File

@ -9,3 +9,4 @@ add_subdirectory(autohide)
add_subdirectory(autohidedragndrop)
add_subdirectory(emptydockarea)
add_subdirectory(dockindock)
add_subdirectory(openGL)

View File

@ -0,0 +1,51 @@
cmake_minimum_required(VERSION 3.5)
project(OpenGLExample VERSION ${VERSION_SHORT})
find_package(
QT NAMES Qt6
COMPONENTS Core Gui Widgets Charts OpenGLWidgets
REQUIRED)
find_package(
Qt${QT_VERSION_MAJOR}
COMPONENTS Core Gui Widgets Charts OpenGLWidgets
REQUIRED)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
add_executable(${PROJECT_NAME} WIN32 main.cpp MainWindow.cpp)
target_include_directories(${PROJECT_NAME}
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../src")
target_link_libraries(${PROJECT_NAME}
PRIVATE qtadvanceddocking-qt${QT_VERSION_MAJOR})
target_link_libraries(
${PROJECT_NAME}
PUBLIC Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Charts
Qt${QT_VERSION_MAJOR}::OpenGLWidgets)
set_target_properties(
${PROJECT_NAME}
PROPERTIES AUTOMOC ON
AUTORCC ON
AUTOUIC ON
CXX_STANDARD 14
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
VERSION ${VERSION_SHORT}
EXPORT_NAME "Qt Advanced Docking System OpenGL Example"
ARCHIVE_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
RUNTIME_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin")
# Define include directories
target_include_directories(
${PROJECT_NAME}
PRIVATE $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/examples/openGL>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${INSTALL_NAME}>)

View File

@ -0,0 +1,34 @@
#include "MainWindow.h"
#include <QChart>
#include <QChartView>
#include <QLabel>
#include <QLineSeries>
#include <QTimer>
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent)
{
setFixedSize(900, 600);
// Create the dock manager. Because the parent parameter is a QMainWindow
// the dock manager registers itself as the central widget.
m_DockManager = new ads::CDockManager(this);
// Create example chart using OpenGL
QChartView* chart_view = new QChartView(this);
QList<QPointF> points = {{0, 0}, {2, 0}, {2, 5}, {4, 5}, {4, -2}, {6, -2}};
QLineSeries* series = new QLineSeries(this);
series->setUseOpenGL(true);
series->replace(points);
chart_view->chart()->addSeries(series);
chart_view->chart()->createDefaultAxes();
chart_view->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
// Create a dock widget with the title "Chart with OpenGL" and set the created
// chart as the dock widget content
ads::CDockWidget* DockWidget = new ads::CDockWidget("Chart with OpenGL");
DockWidget->setWidget(chart_view);
DockWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
// Add the dock widget to the top dock widget area
m_DockManager->addDockWidget(ads::CenterDockWidgetArea, DockWidget);
}

View File

@ -0,0 +1,20 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "DockManager.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget* parent = 0);
~MainWindow() = default;
private:
ads::CDockManager* m_DockManager;
};
#endif // MAINWINDOW_H

17
examples/openGL/main.cpp Normal file
View File

@ -0,0 +1,17 @@
#include <QApplication>
#include <MainWindow.h>
int main(int argc, char* argv[])
{
QApplication::setAttribute(Qt::AA_ShareOpenGLContexts); // required for
// dockings system
// when using OpenGL
// widgets like
// Coin3D viewer
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}