рдХреНрдпреВрдПрдордПрд▓ рд╕реЗ рд╕реА ++ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ (рдбреЗрдЯрд╛) рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╛рд░-рдмрд╛рд░
рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЗрдЦ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдпрд╛, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдереЛрдбрд╝рд╛ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП QML рд╕реЗ C ++ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рджреЗрдЦреЗрдВред рд╣рдо рдЙрдирдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рднреА рдХрд░реЗрдВрдЧреЗред
рдЦреИрд░, рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рд╣рдо рд╕рд░рд▓рддрдо рдЪреАрдЬрд╝ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ: рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд┐рдбрд╝рдХреА рд╣реЛрддреА рд╣реИ, рдЬрдм рдЖрдк рдкрд╛рда рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рдкрд╛рда рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ c ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдлрд┐рд░ рдЙрд╕реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рджрд┐рдЦрд╛рдПрдВред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк: рдХреНрдпреВрдПрдордПрд▓ рд╕реЗ, рд╣рдо рд╕реА ++ рд╡рд░реНрдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реНрд▓реЙрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рда рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рд╛рде рд╣рдо рдмрджрд▓реЗ рд╣реБрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ QML рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓
main.cpp | рд╣рдо рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рд┐рдЧреНрдирд▓ рдФрд░ рд╕реНрд▓реЙрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рд╕рдВрджрд░реНрдн рд╕рдВрдкрддреНрддрд┐ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ (рдЬреИрд╕реЗ рдХрд┐ рд╣рдо qml рдореЗрдВ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкрд╛рд╕ рдХрд░реЗрдВ)
#include <QApplication> #include "qmlapplicationviewer.h" #include <QDeclarativeContext> #include "asd.h" Q_DECL_EXPORT int main(int argc, char *argv[]) { QScopedPointer<QApplication> app(createApplication(argc, argv)); QmlApplicationViewer viewer; asd ASD; viewer.rootContext()->setContextProperty("ASD", &ASD); viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); viewer.setMainQmlFile(QLatin1String("qml/habr1/main.qml")); viewer.showExpanded(); return app->exec(); }
Asd.h рдлрд╝рд╛рдЗрд▓ (рд╕рд┐рдЧреНрдирд▓ рдФрд░ рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХрд╛ рд╢реАрд░реНрд╖рдХ)
#ifndef ASD_H #define ASD_H #include <QObject> class asd : public QObject { Q_OBJECT public: explicit asd(QObject *parent = 0); signals: void transmitNewText(QString text); public slots: void getOldText(QString text); }; #endif // ASD_H
рдлрд╝рд╛рдЗрд▓
asd.cpp (рд╣рдорд╛рд░реЗ рд╕реНрд▓реЙрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ) | рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрд▓реЙрдЯ рдкрд╛рда рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рд╢рдмреНрдж рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ
#include "asd.h" asd::asd(QObject *parent) : QObject(parent) { } void asd::getOldText(QString text){ emit transmitNewText(text + " Hello!"); }
рдЦреИрд░,
main.qml (рдкрд╛рда рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдЦрд┐рдбрд╝рдХреА) | рдорд╛рдЙрд╕ рдмрдЯрди рджрдмрд╛рдХрд░ (onClicked) рд╣рдо рд╕реНрд▓реЙрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рдЧреНрдирд▓ (onTransmitNewText) рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╣рдо рдЕрдкрдиреА рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕рдВрджреЗрд╢ рдЯреЗрдХреНрд╕реНрдЯ рдмрджрд▓рддреЗ рд╣реИрдВ
import QtQuick 1.1 Rectangle { width: 360 height: 360 Connections { target: ASD onTransmitNewText: text1.text = text } Text { id: text1 text: qsTr("Hello World.") anchors.centerIn: parent } MouseArea { anchors.fill: parent onClicked: ASD.getOldText(text1.text) } }
рдЗрд╕рд╕реЗ рдмреЛрд░рд┐рдВрдЧ рд╣рд┐рд╕реНрд╕рд╛ рдЦрддреНрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╕реНрд▓реЙрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдкрд╛рда рдХреЛ рднреЗрдЬрдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рдкреНрд░рдпреЛрдЧ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП, рдкрд╛рда рдкрд░ 20 рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:

рд╣рдо "рд╕рд┐рдЧреНрдирд▓" рдирд╛рдордХ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо рд╕рдордпрд░реЗрдЦрд╛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЧрддрд┐ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреА рддрд╕реНрд╡реАрд░ рд╕реЗ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖ рд░реЗрдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рдЧреНрдирд▓ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдХреЙрд▓ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓реЗрдХрд░ рд╕реНрд▓реЙрдЯ рддрдХ рд░рд╣рддрд╛ рд╣реИ:
рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк: рдЬрдм рдЖрдк рдкрд╛рда рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕реНрд▓реЙрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЙрд╕реА рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ QML рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВред
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЕрд╡рддрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╣рдо рдЕрдкрдиреЗ
main.cpp рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ (рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╣рдо рд╕реНрд▓реЙрдЯ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ)
#include <QApplication> #include "qmlapplicationviewer.h" #include <QGraphicsObject> #include "asd.h" Q_DECL_EXPORT int main(int argc, char *argv[]) { QScopedPointer<QApplication> app(createApplication(argc, argv)); QmlApplicationViewer viewer; viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); viewer.setMainQmlFile(QLatin1String("qml/habr2/main.qml")); asd ASD; QObject *qml = viewer.rootObject(); QObject::connect(qml, SIGNAL(transmitOldText(QString)), &ASD, SLOT(getOldText(QString))); QObject::connect(&ASD, SIGNAL(transmitNewText(QVariant)), qml, SLOT(getNewText(QVariant))); viewer.showExpanded(); return app->exec(); }
asd.h (рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдереЛрдбрд╝рд╛
рдмрджрд▓рд┐рдП ) | рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ qml рдореЗрдВ, рдЖрдк рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЖрдкрдХреЛ
QString рдХреЛ
QVariant рд╕реЗ рдмрджрд▓рдирд╛
рд╣реЛрдЧрд╛ #ifndef ASD_H #define ASD_H #include <QObject> #include <QVariant> class asd : public QObject { Q_OBJECT public: explicit asd(QObject *parent = 0); signals: void transmitNewText(QVariant text); public slots: void getOldText(QString text); }; #endif // ASD_H
asd.cpp (рд╡рд╣реА
QVariant рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛)
#include "asd.h" asd::asd(QObject *parent) : QObject(parent) { } void asd::getOldText(QString text){ emit transmitNewText(QVariant(text + " Hello!")); }
рдЦреИрд░, рд╣рдорд╛рд░реА рдирдИ
main.qml рд╡рд┐рдВрдбреЛ
import QtQuick 1.1 Rectangle { id: rth width: 360 height: 360 function getNewText(text){ text1.text = text } signal transmitOldText(string text) Text { id: text1 text: qsTr("Hello World.") anchors.centerIn: parent } MouseArea { anchors.fill: parent onClicked: transmitOldText(text1.text) } }
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рд╕рдордп рд╣рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рдЪрд╛рд╣рд┐рдП:

рдкрд╛рдардХреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░, рд╣рдо рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ
рдЗрд╕рд▓рд┐рдП,
main.cpp рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬреИрд╕рд╛ рдерд╛ рд╡реИрд╕рд╛ рд╣реА рдмрдирд╛ рд╣реБрдЖ рд╣реИред рд╣рдо рд╕рднреА рдПрдХ рд╕рдВрджрд░реНрдн рд╕рдВрдкрддреНрддрд┐ (рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ
asd ASD; viewer.rootContext()->setContextProperty("ASD", &ASD);
рд╣рдорд╛рд░реЗ C ++ рд╕реНрд▓реЙрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ (рдЕрдм рдпрд╣ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ)
QString asd::getOldTextTransmitNewText(QString text){ return text + " Hello!"; }
рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо
main.qml рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓
рджреЗрддреЗ рд╣реИрдВ MouseArea { anchors.fill: parent onClicked: text1.text = ASD.getOldTextTransmitNewText(text1.text) }
рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рдмреАрддреЗ рд╣реБрдП рд╕рдордп рдХреЛ рджреЗрдЦреЗрдВ:

рдХреЗрд╡рд▓
Q_INVOKABLE рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╡рд┐рдХрд▓реНрдк
Q_INVOKABLE QString getOldTextTransmitNewText(QString text);
рдпрд╣ рд╕реНрд▓реЙрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рдирд┐рдХрд▓рд╛:

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рджреА рдЧрдИ рдорд┐рд▓реАрд╕реЗрдХрдВрдб 20 рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд░рд╛рд╢рд┐ рд╣реИрдВ)
рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рд╕рдмрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд┐рдХрд▓реА (рдмрд╛рдж рдХреЗ рд╕рд┐рдЧреНрдирд▓ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде qml рд╕реЗ рдПрдХ рд╕реНрд▓реЙрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛):
14.885 рдПрдордПрд╕ ред
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рддреЗрдЬ рд╣реИ (рдЬрд╣рд╛рдВ рд╣рдордиреЗ рд╕реНрд▓реЙрдЯ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рд╣реИрдВ):
13.993 рдПрдордПрд╕ ред
рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╡рд┐рдХрд▓реНрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
13.456 рдПрдордПрд╕ ред рд╕реНрд▓реЙрдЯ рдФрд░
13.508 рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП ред
Q_INVOKABLE рдХреЗ рд▓рд┐рдП (рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рд░реНрдЬрд┐рди рдХреЗ рднреАрддрд░)ред
рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдмрд╛рдд рдмрд╣реБрдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рднреА 20 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдЕрдВрддрд░ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред рдЖрдк рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ, рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдП рдЧрдП рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рд╣реИрдВред
рдпрд╣ рд╕рдм
рдХреНрдпреЛрдВ рдФрд░ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛? рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдареАрдХ рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рдерд╛ рдЬреЛ рдореЗрд░реЗ рд╕рд╛рде рд╣реБрдЖ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдХрднреА рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ "рдмрдХрд╡рд╛рд╕" рд╕реЗ рдирд┐рдкрдЯрд╛ рдирд╣реАрдВ рдерд╛ред рдЦреИрд░, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред