diff --git a/CMakeLists.txt b/CMakeLists.txt index d8c64ff..91e42d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.3) cmake_policy(VERSION 3.0.2..3.7) # Название и версия проекта и используемые языки программирования -project(cmlib-example-app-qt5-con VERSION 0.2.0 LANGUAGES C CXX) +project(cmlib-example-app-qt5-gui VERSION 0.2.0 LANGUAGES C CXX) # В каталоге cmake/cmlib находятся файлы с библиотечными функциями if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib) @@ -24,7 +24,7 @@ set(Boost_USE_STATIC_RUNTIME ON) find_package(Boost 1.55.0 REQUIRED COMPONENTS headers) # Qt5 -find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) # Автоматически генерируемый заголовочный файл cmlib_config_hpp_generate() @@ -51,5 +51,5 @@ add_subdirectory(src/cmlib-example) add_subdirectory(cmake/doc) # Создание вспомогательных символических ссылок -add_dependencies(cmlib-example-app-qt5-con create_auxilary_symlinks) +add_dependencies(cmlib-example-app-qt5-gui create_auxilary_symlinks) diff --git a/cmake/cmlib b/cmake/cmlib index 4768c5e..f168386 160000 --- a/cmake/cmlib +++ b/cmake/cmlib @@ -1 +1 @@ -Subproject commit 4768c5efc7ce3ca9fc80baf72df303e91f348a96 +Subproject commit f168386296177c0d4c16ccd814edb4b6c327b8b1 diff --git a/files/data/icon.png b/files/data/icon.png new file mode 100644 index 0000000..499a717 Binary files /dev/null and b/files/data/icon.png differ diff --git a/files/data/icon.qrc b/files/data/icon.qrc new file mode 100644 index 0000000..444fd96 --- /dev/null +++ b/files/data/icon.qrc @@ -0,0 +1,5 @@ + + + icon.png + + diff --git a/l10n/cmlib-example-app-qt5-con_ru_RU.ts b/l10n/cmlib-example-app-qt5-gui_ru_RU.ts similarity index 50% rename from l10n/cmlib-example-app-qt5-con_ru_RU.ts rename to l10n/cmlib-example-app-qt5-gui_ru_RU.ts index b0aeb63..e4e56fe 100644 --- a/l10n/cmlib-example-app-qt5-con_ru_RU.ts +++ b/l10n/cmlib-example-app-qt5-gui_ru_RU.ts @@ -4,14 +4,27 @@ QObject - + No Нет - + Yes Да + + TestWindow + + + Test Window + Тестовое окно + + + + Press me + Нажми меня + + diff --git a/src/cmlib-example/CMakeLists.txt b/src/cmlib-example/CMakeLists.txt index 700ad28..beec06e 100644 --- a/src/cmlib-example/CMakeLists.txt +++ b/src/cmlib-example/CMakeLists.txt @@ -1,14 +1,44 @@ # Название основной цели и имя библиотеки в текущем каталоге -set(TRGT cmlib-example-app-qt5-con) +set(TRGT cmlib-example-app-qt5-gui) -# Список файлов исходных текстов -set(TRGT_cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp) +### +# Списки файлов проекта +### +# Исходные коды +set(TRGT_cpp + ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/test_window.cpp) + +# Заголовочные файлы, для которых необходима обработка препроцессором moc +# (содержат класс, унаследованный от QObject, использующий сигналы и/или слоты) +set(TRGT_moc_hpp + ${CMAKE_CURRENT_SOURCE_DIR}/test_window.hpp) + +# Другие заголовочные файлы +set(TRGT_hpp) + +# Файлы с описанием графического интерфейса для Qt +set(TRGT_ui + ${CMAKE_CURRENT_SOURCE_DIR}/test_window.ui) + +# Файлы описания ресурсов, включаемых в исполняемый файл +set(TRGT_qrc + ${CMAKE_SOURCE_DIR}/files/data/icon.qrc) +### +# Конец списка файлов +### + +# Правило для автоматической генерации препроцессором uic +qt5_wrap_ui(TRGT_ui_h ${TRGT_ui}) + +# Правило для автоматической генерации препроцессором moc +qt5_wrap_cpp(TRGT_moc_cpp ${TRGT_moc_hpp}) # Правила для создания файла ресурсов с вложенными файлами переводов qt5_translation( TRGT_qrc OUTPUT_DIR ${CMAKE_SOURCE_DIR}/l10n BASE_NAME ${TRGT} - SOURCES ${TRGT_cpp} LANGUAGES ru_RU) + SOURCES ${TRGT_cpp} ${TRGT_ui} LANGUAGES ru_RU) # Путь поиска библиотек созданных при компиляции проекта, # включая библиотеки из подключённых внешних проектов, например MyXLib @@ -17,14 +47,16 @@ qt5_translation( link_directories(${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) # Функция для создания цели, результатом которой будет сборка приложения -add_executable(${TRGT} ${TRGT_cpp} ${TRGT_qrc}) +add_executable(${TRGT} ${TRGT_ui_h} ${TRGT_moc_cpp} ${TRGT_qrc} ${TRGT_cpp}) common_target_properties(${TRGT}) # Qt5: подключение заголовочных файлов target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Core_INCLUDE_DIRS}) +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Gui_INCLUDE_DIRS}) +target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Widgets_INCLUDE_DIRS}) # Qt5: подключение библиотек -target_link_libraries(${TRGT} Qt5::Core) +target_link_libraries(${TRGT} Qt5::Core Qt5::Gui Qt5::Widgets) # Добавление к пути поиска заголовочных файлов target_include_directories(${TRGT} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS}) diff --git a/src/cmlib-example/main.cpp b/src/cmlib-example/main.cpp index 4361522..28a4802 100644 --- a/src/cmlib-example/main.cpp +++ b/src/cmlib-example/main.cpp @@ -1,20 +1,25 @@ #include "cmlib_private_config.hpp" +#include "test_window.hpp" #include -#include +#include +#include #include namespace MQ = myx::qt; int main( int argc, char** argv ) { - QCoreApplication app( argc, argv ); + QApplication app( argc, argv ); MQ::QTranslatorsList tl; qDebug() << QObject::tr( "No" ); MQ::append_translators( tl, QStringLiteral( CMLIB_PROJECT_NAME ) ); qDebug() << QObject::tr( "Yes" ); - return( 0 ); + QApplication::setWindowIcon( QIcon( ":/icon/icon.png" ) ); + auto* w = new TestWindow(); + w->show(); + return( QApplication::exec() ); } diff --git a/src/cmlib-example/test_window.cpp b/src/cmlib-example/test_window.cpp new file mode 100644 index 0000000..2b7d78a --- /dev/null +++ b/src/cmlib-example/test_window.cpp @@ -0,0 +1,10 @@ +#include "test_window.hpp" + +TestWindow::TestWindow(QMainWindow* parent) : + QMainWindow(parent), + Ui::TestWindow() +{ + setupUi(this); +} + +TestWindow::~TestWindow() = default; diff --git a/src/cmlib-example/test_window.hpp b/src/cmlib-example/test_window.hpp new file mode 100644 index 0000000..a809e7b --- /dev/null +++ b/src/cmlib-example/test_window.hpp @@ -0,0 +1,17 @@ +#ifndef TEST_WINDOW_HPP_ +#define TEST_WINDOW_HPP_ + +#pragma once + +#include "ui_test_window.h" + +#include + +class TestWindow : public QMainWindow, private Ui::TestWindow { + Q_OBJECT +public: + TestWindow(QMainWindow *parent = nullptr); + virtual ~TestWindow(); +}; + +#endif /* TEST_WINDOW_HPP_ */ diff --git a/src/cmlib-example/test_window.ui b/src/cmlib-example/test_window.ui new file mode 100644 index 0000000..6f55c01 --- /dev/null +++ b/src/cmlib-example/test_window.ui @@ -0,0 +1,34 @@ + + + TestWindow + + + + 0 + 0 + 413 + 253 + + + + Test Window + + + + + + 170 + 30 + 80 + 26 + + + + Press me + + + + + + + diff --git a/thirdparty/myxlib b/thirdparty/myxlib index f63c6b8..22cee20 160000 --- a/thirdparty/myxlib +++ b/thirdparty/myxlib @@ -1 +1 @@ -Subproject commit f63c6b8302c8cc588a81b8ba888dd0d10c95ea31 +Subproject commit 22cee208d1d9ec40d773e1c19167adaddcc6cc9f