Графическое приложение
This commit is contained in:
parent
69af272ddd
commit
a233b6c260
@ -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)
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 4768c5efc7ce3ca9fc80baf72df303e91f348a96
|
||||
Subproject commit f168386296177c0d4c16ccd814edb4b6c327b8b1
|
BIN
files/data/icon.png
Normal file
BIN
files/data/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
5
files/data/icon.qrc
Normal file
5
files/data/icon.qrc
Normal file
@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/icon">
|
||||
<file alias="icon.png">icon.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -4,14 +4,27 @@
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../src/cmlib-example/main.cpp" line="15"/>
|
||||
<location filename="../src/cmlib-example/main.cpp" line="17"/>
|
||||
<source>No</source>
|
||||
<translation>Нет</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/cmlib-example/main.cpp" line="17"/>
|
||||
<location filename="../src/cmlib-example/main.cpp" line="19"/>
|
||||
<source>Yes</source>
|
||||
<translation>Да</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TestWindow</name>
|
||||
<message>
|
||||
<location filename="../src/cmlib-example/test_window.ui" line="14"/>
|
||||
<source>Test Window</source>
|
||||
<translation>Тестовое окно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/cmlib-example/test_window.ui" line="27"/>
|
||||
<source>Press me</source>
|
||||
<translation>Нажми меня</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
@ -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})
|
||||
|
@ -1,20 +1,25 @@
|
||||
#include "cmlib_private_config.hpp"
|
||||
#include "test_window.hpp"
|
||||
|
||||
#include <myx/qt/translators.hpp>
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QApplication>
|
||||
#include <QIcon>
|
||||
#include <QDebug>
|
||||
|
||||
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() );
|
||||
}
|
||||
|
10
src/cmlib-example/test_window.cpp
Normal file
10
src/cmlib-example/test_window.cpp
Normal file
@ -0,0 +1,10 @@
|
||||
#include "test_window.hpp"
|
||||
|
||||
TestWindow::TestWindow(QMainWindow* parent) :
|
||||
QMainWindow(parent),
|
||||
Ui::TestWindow()
|
||||
{
|
||||
setupUi(this);
|
||||
}
|
||||
|
||||
TestWindow::~TestWindow() = default;
|
17
src/cmlib-example/test_window.hpp
Normal file
17
src/cmlib-example/test_window.hpp
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef TEST_WINDOW_HPP_
|
||||
#define TEST_WINDOW_HPP_
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ui_test_window.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
class TestWindow : public QMainWindow, private Ui::TestWindow {
|
||||
Q_OBJECT
|
||||
public:
|
||||
TestWindow(QMainWindow *parent = nullptr);
|
||||
virtual ~TestWindow();
|
||||
};
|
||||
|
||||
#endif /* TEST_WINDOW_HPP_ */
|
34
src/cmlib-example/test_window.ui
Normal file
34
src/cmlib-example/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>
|
2
thirdparty/myxlib
vendored
2
thirdparty/myxlib
vendored
@ -1 +1 @@
|
||||
Subproject commit f63c6b8302c8cc588a81b8ba888dd0d10c95ea31
|
||||
Subproject commit 22cee208d1d9ec40d773e1c19167adaddcc6cc9f
|
Loading…
Reference in New Issue
Block a user