Объект класса QCoreApplication :
управление событиями между приложением и операционной системой
передачу и предоставление аргументов командной строки
Свойства
Условные обозначения:
() – обязательное поел
[] – опциональное поле
| – один из варинатов
Использование:
Hero hr;
hr.sethealt(100);
hr.healt();
Использование:
Hero hr;
hr.setProperty("health",100);
hr.property("health");
Если не нужен собственные «Геттер» и «Сеттер»
Сейчас в С++ ввели Lambda
Что было до …
нельзя использовать параметры по Умолчанию — например: slotMethod(int п = 8)
определять слоты как static
слоты по умолчанию public. Если нужно ограничить их вызов как метода, то объявляем private\protected
Вид 2: QObject::connect(const QObject* sender,
const QMetaMethods signal,
const QObject* receiver,
const QMetaMethods slot,
Qt::ConnectionType type = Qt:Autoconnection);
Пример:
QObject::connect(pSender, SIGNAL(signalMethod( )),pReceiver, SLOT(slotMethod( )));
Пример:
QObject::connect(pSender, &SenderClass::signalMethod, pReceiver, &ReceiverClass::slotMethod);
Метод connect ( ) после вызова возвращает объект класса Connection
#include void Counter::slotlnc()
class Counter : public QObject {
Q_OBJECT
private:
int m_nValue;
public:
Counter();
public slots:
void slotlncO;
signals:
void goodbye ( );
void counterChanged(int);
};
{
emit counterChanged(++m_nValue);
if (m_nValue == 5) {
emit goodbye();
}
}
QObject::connect(const QObject* sender,
const char* signal,
const QObject* receiver,
const char* slot,
Qt::ConnectionType type = Qt:Autoconnection);
Альтернативные решения: Smart pointers (Умные указатели)
Задача: корректное уничтожение динамически создаваемых объектов без утечки памяти
При уничтожении созданного объекта (при вызове его деструктора) все присоединенные к нему объекты-потомки уничтожаются автоматически.
Вывод иерархии:
pobj1-> dumpObjectTree();
QObject::
QObject::the first child of pobj1
QObject:: the first child of pobj2
QObject:: the second child of pobj2
qDebug() << pobj1->metaObject () ->className() ;
Кодогеренация в С++17
Идея: автоматизируем! –> make, makefile
Преимущества:
Экономия времени на написание команд для сборки проекта ( 1 команда - make)
Отслеживание и перекомпиляция только изменившихся объектов
Кроссплатформенная сборка
Элементарный makefile
hellomake: hellomake.c hellofunc.c
g++ -o hellomake hellomake.c hellofunc.c -I.
Задачи:
Универсальность
Кроссплатформенность
Нужно БОЛЬШЕ (золота, рабов) АВТОМАТИЗАЦИИ
Решение:
Генерация makefile для новых проектов исходя из настроек по умолчанию для текущего окружения/ платформы
Qmake, qbs
Загляните в: build-MyFirstUnit-Desktop_Qt_5_9_0_MinGW_32bit\Makefile
Критика Qmake
DEFINES += QT_NO_CAST_TO_ASCII
!macx:DEFINES += QT_USE_FAST_OPERATOR_PLUS QT_USE_FAST_CONCATENATION
unix {
CONFIG(debug, debug|release):OBJECTS_DIR = $${OUT_PWD}/.obj/debug-shared
CONFIG(release, debug|release):OBJECTS_DIR = $${OUT_PWD}/.obj/release-shared
CONFIG(debug, debug|release):MOC_DIR = $${OUT_PWD}/.moc/debug-shared
CONFIG(release, debug|release):MOC_DIR = $${OUT_PWD}/.moc/release-shared
RCC_DIR = $${OUT_PWD}/.rcc
UI_DIR = $${OUT_PWD}/.uic
}
Использование JavaScript
---helpers.js---
function planetsCorrectlyAligned()
{
// implementation
return true;
}
---myproject.qbs---
import qbs 1.0
import "helpers.js" as Helpers
Product {
name: "myproject"
Group {
condition: Helpers.planetsCorrectlyAligned()
file: "magic_hack.cpp"
}
}
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть