Начало

This commit is contained in:
2022-10-04 15:18:05 +03:00
commit ed1a09f3af
40 changed files with 5553 additions and 0 deletions

View File

@ -0,0 +1,65 @@
# Название основной цели и имени программы в текущем каталоге
set(TRGT myx-cmake-example-qt5-gui)
# cmake-format: off
###
# Списки файлов проекта
###
# Исходные коды
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/share/icon.qrc)
###
# Конец списков файлов
###
# cmake-format: on
set(TRGT_headers ${TRGT_hpp} ${TRGT_moc_hpp})
# Правило для автоматической генерации препроцессором uic
qt5_wrap_ui(TRGT_ui_h ${TRGT_ui})
# Правило для автоматической генерации препроцессором moc
qt5_wrap_cpp(TRGT_moc_cpp ${TRGT_moc_hpp})
# Поиск строк для локализации в файлах, перечисленных в ${TRGT_cpp} ${TRGT_ui}
# Создание и обновление файлов переводов в каталоге ${CMAKE_SOURCE_DIR}/l10n
# Интеграция переводов в исполняемый файл для подключения классом QTranslator
myx_cmake_qt5_translation(TRGT_qrc_cpp
OUTPUT_DIR ${CMAKE_SOURCE_DIR}/l10n
BASE_NAME ${TRGT}
SOURCES ${TRGT_cpp} ${TRGT_ui}
LANGUAGES ru_RU)
# Правило для автоматической генерации препроцессором qrc
# (обязательно после вызова функции qt5_translation, если она есть,
# так как она инициализирует переменную со списком ресурсов)
qt5_add_resources(TRGT_qrc_cpp ${TRGT_qrc})
# Функция для создания цели, результатом которой будет сборка приложения
add_executable(${TRGT} ${TRGT_headers} ${TRGT_ui_h} ${TRGT_moc_cpp} ${TRGT_qrc_cpp} ${TRGT_cpp})
myx_cmake_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 Qt5::Gui Qt5::Widgets)

View File

@ -0,0 +1,29 @@
#include "config_p.hpp"
#include "myx-example-qt5-gui/test_window.hpp"
#include <QApplication>
#include <QIcon>
#include <QTranslator>
int main( int argc, char** argv )
{
QApplication app( argc, argv );
// Подключение переводов в зависимости от текущей локали
auto* translator = new QTranslator( QApplication::instance() );
if ( translator->load( QLocale(), PROJECT_NAME, QStringLiteral( "_" ), QStringLiteral( ":/qm" ) ) )
{
QApplication::installTranslator( translator );
}
// Установка иконки для программы
QApplication::setWindowIcon( QIcon( ":/icon/icon.png" ) );
QApplication::setApplicationDisplayName( QObject::tr( "Test title" ) );
// Создание и отображение главного окна
auto* w = new TestWindow();
w->show();
return( QApplication::exec() );
} // main

View File

@ -0,0 +1,11 @@
#include "myx-example-qt5-gui/test_window.hpp"
TestWindow::TestWindow( QMainWindow* parent ) :
QMainWindow ( parent ),
Ui::TestWindow()
{
setupUi( this );
}
TestWindow::~TestWindow() = default;

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TestWindow</class>
<widget class="QMainWindow" name="TestWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>413</width>
<height>253</height>
</rect>
</property>
<property name="windowTitle">
<string>Test Window</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="exitButton">
<property name="geometry">
<rect>
<x>170</x>
<y>30</y>
<width>80</width>
<height>26</height>
</rect>
</property>
<property name="text">
<string>Press me!</string>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>