update
This commit is contained in:
parent
6d71ca630a
commit
3ca7530a29
@ -868,6 +868,24 @@ int main( int argc, char** argv )
|
|||||||
git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-app-qt5-gui
|
git clone --recursive https://git.246060.ru/f1x1t/cmlib-example-app-qt5-gui
|
||||||
----
|
----
|
||||||
|
|
||||||
|
В каталоге `files/data` создать файл описания включаемых ресурсов `icon.qrc`:
|
||||||
|
|
||||||
|
[source,xml]
|
||||||
|
----
|
||||||
|
<RCC>
|
||||||
|
<qresource prefix="/icon">
|
||||||
|
<file alias="icon.png">icon.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
||||||
|
----
|
||||||
|
|
||||||
|
и загрузить файл иконки:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
wget https://git.246060.ru/f1x1t/cmlib-example-app-qt5-gui/raw/branch/master/files/data/icon.png
|
||||||
|
----
|
||||||
|
|
||||||
Для графического приложения нужно создать файл описания интерфейса
|
Для графического приложения нужно создать файл описания интерфейса
|
||||||
`src/cmlib-example/test_window.ui`:
|
`src/cmlib-example/test_window.ui`:
|
||||||
|
|
||||||
@ -1001,6 +1019,85 @@ find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
|
|||||||
----
|
----
|
||||||
|
|
||||||
|
|
||||||
|
В файле `src/cmake-example/CMakeLists.txt` добавить новые файлы к списку
|
||||||
|
файлов, используемых для компиляции:
|
||||||
|
|
||||||
|
[source,cmake]
|
||||||
|
----
|
||||||
|
###
|
||||||
|
# Списки файлов проекта
|
||||||
|
###
|
||||||
|
# Исходные коды
|
||||||
|
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)
|
||||||
|
###
|
||||||
|
# Конец списков файлов
|
||||||
|
###
|
||||||
|
----
|
||||||
|
|
||||||
|
Для обеспечения работы препроцессоров Qt необходимо создать правила
|
||||||
|
преобразования файлов:
|
||||||
|
|
||||||
|
[source,cmake]
|
||||||
|
----
|
||||||
|
# Правило для автоматической генерации препроцессором uic
|
||||||
|
qt5_wrap_ui(TRGT_ui_h ${TRGT_ui})
|
||||||
|
|
||||||
|
# Правило для автоматической генерации препроцессором moc
|
||||||
|
qt5_wrap_cpp(TRGT_moc_cpp ${TRGT_moc_hpp})
|
||||||
|
|
||||||
|
# Правила для создания файла ресурсов с вложенными файлами переводов
|
||||||
|
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(TRTG_qrc_cpp ${TRGT_qrc})
|
||||||
|
----
|
||||||
|
|
||||||
|
Цель для создания исполняемого файла нужно изменить таким образом,
|
||||||
|
чтобы она зависела от файлов с исходными кодами и файлов, генерируемых
|
||||||
|
препроцессорами:
|
||||||
|
|
||||||
|
[source,cmake]
|
||||||
|
----
|
||||||
|
add_executable(${TRGT} ${TRGT_ui_h} ${TRGT_moc_cpp} ${TRGT_qrc_cpp} ${TRGT_cpp})
|
||||||
|
----
|
||||||
|
|
||||||
|
Подключение заголовочных файлов и библиотек Qt должно выглядеть так:
|
||||||
|
|
||||||
|
[source,cmake]
|
||||||
|
----
|
||||||
|
# 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)
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1011,37 +1108,6 @@ find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
В файле `src/cmake-example/CMakeLists.txt` добавить новые файлы к списку
|
|
||||||
файлов, используемых для компиляции:
|
|
||||||
|
|
||||||
[source,cmake]
|
|
||||||
----
|
|
||||||
set(TRGT_sources
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/my_main_window.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(TRGT_uis
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/my_main_window.ui
|
|
||||||
)
|
|
||||||
----
|
|
||||||
|
|
||||||
[source,cmake]
|
|
||||||
----
|
|
||||||
# Цель для создания исполняемого файла
|
|
||||||
add_executable(${TRGT} ${TRGT_sources} ${TRGT_uis})
|
|
||||||
----
|
|
||||||
|
|
||||||
и добавить строки для подключения графических библиотек Qt5 и
|
|
||||||
соответствующих им заголовочных файлов:
|
|
||||||
|
|
||||||
[source,cmake]
|
|
||||||
----
|
|
||||||
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Gui_INCLUDE_DIRS})
|
|
||||||
target_include_directories(${TRGT} SYSTEM PUBLIC ${Qt5Widgets_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(${TRGT} Qt5::Gui)
|
|
||||||
target_link_libraries(${TRGT} Qt5::Widgets)
|
|
||||||
----
|
|
||||||
|
|
||||||
Во время сборки проекта в файл переводов `cmex/l10n/cmex_app_ru_RU.ts`
|
Во время сборки проекта в файл переводов `cmex/l10n/cmex_app_ru_RU.ts`
|
||||||
будут добавлены новые строки, их нужно перевести с помощью `linguist` и
|
будут добавлены новые строки, их нужно перевести с помощью `linguist` и
|
||||||
|
Loading…
x
Reference in New Issue
Block a user