update
This commit is contained in:
parent
5f85ae0f8f
commit
cf7d33f8b2
@ -854,13 +854,6 @@ int main( int argc, char** argv )
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
ПИШУ ЗДЕСЬ!!!
|
|
||||||
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
==== Графическое приложение
|
==== Графическое приложение
|
||||||
|
|
||||||
|
|
||||||
@ -875,129 +868,150 @@ 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
|
||||||
----
|
----
|
||||||
|
|
||||||
В файлах `CMakeLists.txt` и `src/cmlib-example/CMakeLists.txt` нужно
|
Для графического приложения нужно создать файл описания интерфейса
|
||||||
заменить все строки `cmlib-example-app-qt5-con` на `cmlib-example-app-qt5-gui`.
|
`src/cmlib-example/test_window.ui`:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Для создания минимального графического приложения нужно создать файл
|
|
||||||
описания интерфейса `cmex/src/cmex/my_main_window.ui`:
|
|
||||||
|
|
||||||
[source,xml]
|
[source,xml]
|
||||||
----
|
----
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>MyMainWindow</class>
|
<class>TestWindow</class>
|
||||||
<widget class="QMainWindow" name="MyMainWindow">
|
<widget class="QMainWindow" name="TestWindow">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>678</width>
|
<width>413</width>
|
||||||
<height>415</height>
|
<height>253</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Main Window</string>
|
<string>Test Window</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralwidget"/>
|
<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>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
----
|
----
|
||||||
|
|
||||||
заголовочный файл `cmex/src/cmex/my_main_window.hpp`:
|
заголовочный файл `src/cmlib-example/test_window.hpp`:
|
||||||
|
|
||||||
[source,cpp]
|
[source,cpp]
|
||||||
----
|
----
|
||||||
#ifndef CMEX_MY_MAIN_WINDOW_HPP_
|
#ifndef TEST_WINDOW_HPP_
|
||||||
#define CMEX_MY_MAIN_WINDOW_HPP_
|
#define TEST_WINDOW_HPP_
|
||||||
|
|
||||||
#include <QWidget>
|
#pragma once
|
||||||
#include "ui_my_main_window.h"
|
|
||||||
|
|
||||||
class MyMainWindow : public QWidget, private Ui::MyMainWindow {
|
#include "ui_test_window.h"
|
||||||
|
|
||||||
|
#include <QMainWindow>
|
||||||
|
|
||||||
|
class TestWindow : public QMainWindow, private Ui::TestWindow {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MyMainWindow(QWidget* parent = 0);
|
TestWindow(QMainWindow *parent = nullptr);
|
||||||
virtual ~MyMainWindow();
|
virtual ~TestWindow();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* CMEX_MY_MAIN_WINDOW_HPP_ */
|
#endif /* TEST_WINDOW_HPP_ */
|
||||||
----
|
----
|
||||||
|
|
||||||
и файл с реализацией конструктора и деструктора
|
и файл с реализацией конструктора, в котором проводится инициализация
|
||||||
`cmex/src/cmex/my_main_window.cpp`:
|
графических элементов, `src/cmlib-example/test_window.cpp`:
|
||||||
|
|
||||||
[source,cpp]
|
[source,cpp]
|
||||||
----
|
----
|
||||||
#include "my_main_window.hpp"
|
#include "test_window.hpp"
|
||||||
|
|
||||||
MyMainWindow::MyMainWindow(QWidget* parent) {
|
|
||||||
|
|
||||||
|
TestWindow::TestWindow(QMainWindow* parent) :
|
||||||
|
QMainWindow(parent),
|
||||||
|
Ui::TestWindow()
|
||||||
|
{
|
||||||
|
setupUi(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
MyMainWindow::~MyMainWindow() {
|
TestWindow::~TestWindow() = default;
|
||||||
|
|
||||||
}
|
|
||||||
----
|
----
|
||||||
|
|
||||||
Для отображения графического окна нужно заменить файл
|
Для отображения графического окна нужно заменить файл
|
||||||
`cmex/src/cmex/main.cpp` на:
|
`src/cmlib-examples/main.cpp` на:
|
||||||
|
|
||||||
[source,cpp]
|
[source,cpp]
|
||||||
----
|
----
|
||||||
#include "compiler_features.hpp"
|
#include "cmlib_private_config.hpp"
|
||||||
#include "cmlib_config.hpp"
|
#include "test_window.hpp"
|
||||||
|
|
||||||
#include <QtCore>
|
#include <myx/qt/translators.hpp>
|
||||||
#include <QtWidgets>
|
|
||||||
#include <iostream>
|
|
||||||
#include <cmext/cmext.hpp>
|
|
||||||
|
|
||||||
#include "cmex.hpp"
|
#include <QApplication>
|
||||||
#include "my_main_window.hpp"
|
#include <QIcon>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
QTextStream& qStdOut()
|
namespace MQ = myx::qt;
|
||||||
|
|
||||||
|
|
||||||
|
int main( int argc, char** argv )
|
||||||
{
|
{
|
||||||
static QTextStream ts(stdout);
|
QApplication app( argc, argv );
|
||||||
return ts;
|
qDebug() << QObject::tr( "No" );
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
// Подключение переводов
|
||||||
QApplication app(argc, argv);
|
MQ::QTranslatorsList tl;
|
||||||
QTranslator translator;
|
MQ::append_translators( tl, QStringLiteral( CMLIB_PROJECT_NAME ) );
|
||||||
|
qDebug() << QObject::tr( "Yes" );
|
||||||
|
|
||||||
if (translator.load(QLocale(), "cmex_app", QLatin1String("_"), QLatin1String(":/qm")))
|
// Установка иконки для программы
|
||||||
{
|
QApplication::setWindowIcon( QIcon( ":/icon/icon.png" ) );
|
||||||
app.installTranslator(&translator);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Значение из compiler_features.hpp
|
// Создание и отображение главного окна
|
||||||
qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl;
|
auto* w = new TestWindow();
|
||||||
// Значение из cmlib_config.hpp
|
w->show();
|
||||||
qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl;
|
return( QApplication::exec() );
|
||||||
// Значение из cmlib_config.hpp
|
|
||||||
qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl;
|
|
||||||
// Функция из внутренней библиотеки
|
|
||||||
qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl;
|
|
||||||
// Функция из внешней библиотеки
|
|
||||||
qStdOut() << QObject::tr("libcmext function call: ") << cmext_init(9) << endl;
|
|
||||||
|
|
||||||
MyMainWindow* mmw = new MyMainWindow();
|
|
||||||
mmw->show();
|
|
||||||
return app.exec();
|
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
В файле `cmex/src/cmex/CMakeLists.txt` добавить новые файлы к списку
|
|
||||||
|
В файлах `CMakeLists.txt` и `src/cmlib-example/CMakeLists.txt` нужно
|
||||||
|
заменить все строки `cmlib-example-app-qt5-con` на `cmlib-example-app-qt5-gui`.
|
||||||
|
|
||||||
|
Для поиска необходимых компонентов Qt5 нужно в файле `CMakeLists.txt`,
|
||||||
|
находящемся в корневом каталоге проекта, добавить поиск компонентов
|
||||||
|
`Gui` и `Widgets`:
|
||||||
|
|
||||||
|
[source,cmake]
|
||||||
|
----
|
||||||
|
# Используемые компоненты Qt5
|
||||||
|
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
ПИШУ ЗДЕСЬ!!!
|
||||||
|
|
||||||
|
|
||||||
|
<<<
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
В файле `src/cm/CMakeLists.txt` добавить новые файлы к списку
|
||||||
файлов, используемых для компиляции:
|
файлов, используемых для компиляции:
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user