Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,7 @@ target_wrapper.*

# QtCreator CMake
CMakeLists.txt.user*

# Build
src/build*
build*
11 changes: 11 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cmake_minimum_required(VERSION 3.16)

project(QFlightInstruments)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(
src/qfi
src/example
)
106 changes: 106 additions & 0 deletions src/example/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
cmake_minimum_required(VERSION 3.14)

# Define the project name and version
project(qfi_example2 VERSION 1.0 LANGUAGES CXX)

# Find required packages (Qt5 or Qt6 based on the environment)
find_package(Qt5 COMPONENTS Core Gui Widgets Svg REQUIRED)

# If Qt5.6 or higher, also include svgwidgets
if(Qt5_VERSION VERSION_GREATER_EQUAL 5.6)
find_package(Qt5 COMPONENTS SvgWidgets REQUIRED)
endif()

# Set the C++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Create an executable target
add_executable(qfi_example2)

# Set the include directories
target_include_directories(qfi_example2 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

# Add source files
set(SOURCES
LayoutSquare.cpp # example/LayoutSquare.cpp
MainWindow.cpp # example/MainWindow.cpp
WidgetAI.cpp # example/WidgetAI.cpp
WidgetALT.cpp # example/WidgetALT.cpp
WidgetASI.cpp # example/WidgetASI.cpp
WidgetEADI.cpp # example/WidgetEADI.cpp
WidgetEHSI.cpp # example/WidgetEHSI.cpp
WidgetHI.cpp # example/WidgetHI.cpp
WidgetTC.cpp # example/WidgetTC.cpp
WidgetVSI.cpp # example/WidgetVSI.cpp
WidgetSix.cpp # example/WidgetSix.cpp
main.cpp # example/main.cpp
)

# Add header files
set(HEADERS
LayoutSquare.h # example/LayoutSquare.h
MainWindow.h # example/MainWindow.h
WidgetAI.h # example/WidgetAI.h
WidgetALT.h # example/WidgetALT.h
WidgetASI.h # example/WidgetASI.h
WidgetEADI.h # example/WidgetEADI.h
WidgetEHSI.h # example/WidgetEHSI.h
WidgetHI.h # example/WidgetHI.h
WidgetTC.h # example/WidgetTC.h
WidgetVSI.h # example/WidgetVSI.h
WidgetSix.h # example/WidgetSix.h
)

# Add UI forms
set(FORMS
MainWindow.ui #example/MainWindow.ui
WidgetAI.ui #example/WidgetAI.ui
WidgetALT.ui #example/WidgetALT.ui
WidgetASI.ui #example/WidgetASI.ui
WidgetEADI.ui #example/WidgetEADI.ui
WidgetEHSI.ui #example/WidgetEHSI.ui
WidgetHI.ui #example/WidgetHI.ui
WidgetTC.ui #example/WidgetTC.ui
WidgetVSI.ui #example/WidgetVSI.ui
WidgetSix.ui #example/WidgetSix.ui
)

# Add the source, headers, and UI files to the executable
target_sources(qfi_example2 PRIVATE ${SOURCES} ${HEADERS})

# Add the UI forms to the project
qt5_wrap_ui(UI_HEADERS ${FORMS})

# Link the UI headers with the project
target_sources(qfi_example2 PRIVATE ${UI_HEADERS})

# Link against the necessary Qt libraries
target_link_libraries(qfi_example2 PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Svg)
if (Qt5_VERSION VERSION_GREATER_EQUAL 5.6)
target_link_libraries(qfi_example2 PRIVATE Qt5::SvgWidgets)
endif()

# Link against the qfi library
target_link_libraries(qfi_example2 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libqfi.so)

# Define preprocessor definitions
target_compile_definitions(qfi_example2 PRIVATE QFI_DLL_IMPORTS QT_DEPRECATED_WARNINGS)

# Conditional compilation for Windows
if(WIN32)
target_compile_definitions(qfi_example2 PRIVATE NOMINMAX WIN32 _WINDOWS _CRT_SECURE_NO_DEPRECATE _SCL_SECURE_NO_WARNINGS _USE_MATH_DEFINES)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO")
endif()

# Conditional compilation for Linux
if(UNIX)
target_compile_definitions(qfi_example2 PRIVATE _LINUX_)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
endif()

# Set output directory for the executable
set_target_properties(qfi_example2 PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../bin
)
30 changes: 20 additions & 10 deletions src/example/LayoutSquare.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -242,18 +242,28 @@ QPoint LayoutSquare::calculateCenterPnt( QSize fromSize, QSize itemSize ) const
QSize LayoutSquare::calculateProperSize( QSize fromSize ) const
{
QSize resultSize;

if ( fromSize.height() < fromSize.width() )
{
resultSize.setHeight ( fromSize.height() - margin() );
resultSize.setWidth ( fromSize.height() - margin() );

#if QT_VERSION_MAJOR >= 6
QMargins margins = contentsMargins();
if (fromSize.height() < fromSize.width()) {
// TODO Consider using all margins
resultSize.setHeight(fromSize.height() - margins.top());
resultSize.setWidth(fromSize.height() - margins.right());
} else {
// TODO Consider using all margins
resultSize.setHeight(fromSize.width() - margins.top());
resultSize.setWidth(fromSize.width() - margins.right());
}
else
{
resultSize.setHeight ( fromSize.width() - margin() );
resultSize.setWidth ( fromSize.width() - margin() );
#else
if (fromSize.height() < fromSize.width()) {
resultSize.setHeight(fromSize.height() - margin());
resultSize.setWidth(fromSize.height() - margin());
} else {
resultSize.setHeight(fromSize.width() - margin());
resultSize.setWidth(fromSize.width() - margin());
}

#endif

return resultSize;
}

Expand Down
4 changes: 2 additions & 2 deletions src/example/MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@

////////////////////////////////////////////////////////////////////////////////

#include <QElapsedTimer>
#include <QMainWindow>
#include <QTime>

////////////////////////////////////////////////////////////////////////////////

Expand Down Expand Up @@ -69,7 +69,7 @@ class MainWindow : public QMainWindow
double _realTime; ///< [s] real time
double _playTime; ///< [s] time for automatic parameters updating

QTime _time; ///< time
QElapsedTimer _time; ///< time
};

////////////////////////////////////////////////////////////////////////////////
Expand Down
8 changes: 7 additions & 1 deletion src/example1.pro
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
QT += core gui svg
QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

greaterThan(QT_MAJOR_VERSION, 5) {
QT += svgwidgets
} else {
QT += svg
}

TEMPLATE = app

################################################################################
Expand Down
8 changes: 7 additions & 1 deletion src/example2.pro
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
QT += core gui svg
QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

greaterThan(QT_MAJOR_VERSION, 5) {
QT += svgwidgets
} else {
QT += svg
}

TEMPLATE = app

################################################################################
Expand Down
74 changes: 74 additions & 0 deletions src/qfi/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
cmake_minimum_required(VERSION 3.14)

# Define the project name and version
project(qfi VERSION 1.0 LANGUAGES CXX)

# Find required packages (Qt5 or Qt6 based on the environment)
find_package(Qt5 COMPONENTS Widgets Svg REQUIRED)

# Create a library target
add_library(qfi SHARED)

# Set the include directories
target_include_directories(qfi PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

# Add source files
set(SOURCES
qfi_Colors.cpp # qfi/qfi_Colors.cpp
qfi_Fonts.cpp # qfi/qfi_Fonts.cpp
qfi_EADI.cpp # qfi/qfi_EADI.cpp
qfi_EHSI.cpp # qfi/qfi_EHSI.cpp
qfi_AI.cpp # qfi/qfi_AI.cpp
qfi_HI.cpp # qfi/qfi_HI.cpp
qfi_VSI.cpp # qfi/qfi_VSI.cpp
qfi_ASI.cpp # qfi/qfi_ASI.cpp
qfi_ALT.cpp # qfi/qfi_ALT.cpp
qfi_TC.cpp # qfi/qfi_TC.cpp
)

# Add header files
set(HEADERS
qfi_defs.h # qfi/qfi_defs.h
qfi_doxygen.h # qfi/qfi_doxygen.h
qfi_Colors.h # qfi/qfi_Colors.h
qfi_Fonts.h # qfi/qfi_Fonts.h
qfi_EADI.h # qfi/qfi_EADI.h
qfi_EHSI.h # qfi/qfi_EHSI.h
qfi_AI.h # qfi/qfi_AI.h
qfi_HI.h # qfi/qfi_HI.h
qfi_VSI.h # qfi/qfi_VSI.h
qfi_ASI.h # qfi/qfi_ASI.h
qfi_ALT.h # qfi/qfi_ALT.h
qfi_TC.h # qfi/qfi_TC.h
)

# Add the resource file
qt5_add_resources(RESOURCES qfi.qrc) # qfi/qfi.qrc

# Add sources, headers, and resources to the library
target_sources(qfi PRIVATE ${SOURCES} ${HEADERS} ${RESOURCES})

# Link against the necessary Qt libraries
target_link_libraries(qfi PRIVATE Qt5::Widgets Qt5::Svg)

# Define preprocessor definitions
target_compile_definitions(qfi PRIVATE QFI_DLL_EXPORTS QT_DEPRECATED_WARNINGS)

# Conditional compilation for Windows
if(WIN32)
target_compile_definitions(qfi PRIVATE NOMINMAX WIN32 _WINDOWS _CRT_SECURE_NO_DEPRECATE _SCL_SECURE_NO_WARNINGS _USE_MATH_DEFINES)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO")
endif()

# Conditional compilation for Linux
if(UNIX)
target_compile_definitions(qfi PRIVATE _LINUX_)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
endif()

# Set output directory for the shared library
set_target_properties(qfi PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../lib
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../lib
)