Начало
This commit is contained in:
65
src/myx-example-qt5-gui/CMakeLists.txt
Normal file
65
src/myx-example-qt5-gui/CMakeLists.txt
Normal 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)
|
29
src/myx-example-qt5-gui/main.cpp
Normal file
29
src/myx-example-qt5-gui/main.cpp
Normal 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
|
11
src/myx-example-qt5-gui/test_window.cpp
Normal file
11
src/myx-example-qt5-gui/test_window.cpp
Normal 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;
|
34
src/myx-example-qt5-gui/test_window.ui
Normal file
34
src/myx-example-qt5-gui/test_window.ui
Normal 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>
|
Reference in New Issue
Block a user