Открыть боковую панель
evseev84
Прикладная разработка на Qt
Коммиты
5b5c8397
Коммит
5b5c8397
создал
Окт 24, 2023
по автору
OMP Education
Просмотр файлов
Add module: JavaScript.
#12
владелец
23edb605
Изменения
23
Развернуть все
Скрыть пробелы
Построчно
Рядом
modules/contents.md
Просмотр файла @
5b5c8397
...
...
@@ -53,7 +53,13 @@ Copyright © 2016–2023 ООО «Открытая мобильн
*
[
Примеры
](
./models_and_views/examples.md
)
*
[
Задания
](
./models_and_views/tasks.md
)
*
[
Тесты
](
./models_and_views/tests.md
)
*
JavaScript
*
[
JavaScript
](
./javascript
)
*
Лекция:
[
cлайды
](
./javascript/lecture.fodp
)
,
[
конспект
](
./javascript/lecture.md
)
*
[
Примеры
](
./javascript/examples.md
)
*
[
Задания
](
./javascript/tasks.md
)
*
[
Тесты
](
./javascript/tests.md
)
*
Silica
*
Qt
Quick Controls
2
*
Объектная модель
Qt
...
...
modules/javascript/examples.md
0 → 100644
Просмотр файла @
5b5c8397
# Примеры по теме «Работа с Java Script»
Copyright
©
2016–2023 ООО
«Открытая мобильная платформа».
Этот документ предоставляется в
соответствии
с
[
Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная
](
../../LICENSE.CC-BY-4.0.ru.md
)
.
*
[
Пример работы с WorkerScript для Qt Creator
](
../../projects/pascals_triangle_qtcreator
)
*
[
Пример работы с WorkerScript для Аврора IDE
](
../../projects/pascals_triangle_aurora
)
modules/javascript/lecture.fodp
0 → 100644
Просмотр файла @
5b5c8397
Это отличие свёрнуто
Нажмите, чтобы развернуть
modules/javascript/lecture.md
0 → 100644
Просмотр файла @
5b5c8397
Это отличие свёрнуто
Нажмите, чтобы развернуть
modules/javascript/tasks.md
0 → 100644
Просмотр файла @
5b5c8397
# Задания по теме «Работа с Java Script»
Copyright
©
2016–2023 ООО
«Открытая мобильная платформа».
Этот документ предоставляется в
соответствии
с
[
Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная
](
../../LICENSE.CC-BY-4.0.ru.md
)
.
## Задание 1
Реализуйте параллельное вычисление n-го элемента из последовательности Фибоначчи с помощью
`WorkerScript`
.
modules/javascript/tests.md
0 → 100644
Просмотр файла @
5b5c8397
# Тесты по теме «Работа с Java Script»
Copyright
©
2016–2023 ООО
«Открытая мобильная платформа».
Этот документ предоставляется в
соответствии
с
[
Публичной лицензией Creative Commons с указанием авторства версии 4.0 Международная
](
../../LICENSE.CC-BY-4.0.ru.md
)
.
## Order
Расположите в правильном порядке вызов базовых действий для рисования линии на
`Canvas`
:
---
*
ctx.strokeStyle = "red"
*
ctx.beginPath()
*
ctx.moveTo(50,50)
*
ctx.lineTo(150,50)
*
ctx.stroke()
## Single choice
Сколько вторичных потоков можно подключить к экземпляру
`WorkerScript`
?
---
*
**один**
*
два
*
три
*
от одного до 63
## Single choice
Из какого объекта WorkerScript можно обращаться к свойствам и методам QML?
---
*
**Из определённого в QML**
*
Из определённого в js-файле
*
Из обоих
projects/pascals_triangle_aurora/icons/108x108/ru.auroraos.PascalsTriangle.png
0 → 100644
Просмотр файла @
5b5c8397
7,8 КБ
projects/pascals_triangle_aurora/icons/128x128/ru.auroraos.PascalsTriangle.png
0 → 100644
Просмотр файла @
5b5c8397
9,7 КБ
projects/pascals_triangle_aurora/icons/172x172/ru.auroraos.PascalsTriangle.png
0 → 100644
Просмотр файла @
5b5c8397
13,1 КБ
projects/pascals_triangle_aurora/icons/86x86/ru.auroraos.PascalsTriangle.png
0 → 100644
Просмотр файла @
5b5c8397
5,9 КБ
projects/pascals_triangle_aurora/qml/PascalsTriangle.qml
0 → 100644
Просмотр файла @
5b5c8397
// SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <edu@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import
QtQuick
2.0
Item
{
id
:
root
property
real
fontSize
:
width
/
16
function
requestResult
()
{
resultText
.
text
=
"
Loading...
"
;
worker
.
sendMessage
({
row
:
rowEdit
.
value
,
column
:
columnEdit
.
value
});
}
WorkerScript
{
id
:
worker
source
:
"
js/worker.js
"
onMessage
:
{
if
(
messageObject
.
row
===
rowEdit
.
value
&&
messageObject
.
column
===
columnEdit
.
value
)
{
if
(
!
messageObject
.
result
)
resultText
.
text
=
"
Column must be <= Row
"
;
else
resultText
.
text
=
messageObject
.
result
;
}
}
}
Column
{
objectName
:
"
layout
"
width
:
parent
.
width
Text
{
id
:
resultText
objectName
:
"
resultText
"
height
:
root
.
height
/
2
width
:
parent
.
width
wrapMode
:
Text
.
WordWrap
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
font.pixelSize
:
fontSize
}
Row
{
objectName
:
"
inputLayout
"
anchors.horizontalCenter
:
parent
.
horizontalCenter
Text
{
id
:
rowLabel
objectName
:
"
rowLabel
"
text
:
"
Row:
"
font.pixelSize
:
fontSize
}
TextEdit
{
id
:
rowEdit
objectName
:
"
rowEdit
"
property
int
value
:
Number
(
text
)
text
:
"
0
"
width
:
(
root
.
width
)
/
5
font.pixelSize
:
fontSize
onValueChanged
:
{
console
.
log
(
"
row changed:
"
+
value
);
requestResult
();
}
}
Text
{
id
:
columnLabel
objectName
:
"
columnLabel
"
text
:
"
Column:
"
font.pixelSize
:
fontSize
}
TextEdit
{
id
:
columnEdit
objectName
:
"
columnEdit
"
property
int
value
:
Number
(
text
)
text
:
"
0
"
width
:
(
root
.
width
)
/
5
font.pixelSize
:
fontSize
onValueChanged
:
{
console
.
log
(
"
column changed:
"
+
value
);
requestResult
();
}
}
}
}
}
projects/pascals_triangle_aurora/qml/js/worker.js
0 → 100644
Просмотр файла @
5b5c8397
// SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <edu@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
var
cache
=
[];
function
binomialCoefficient
(
row
,
column
)
{
if
(
!
cache
[
row
])
cache
[
row
]
=
[];
if
(
cache
[
row
][
column
]
!==
undefined
)
return
cache
[
row
][
column
];
console
.
log
(
row
,
column
);
var
result
=
row
<
column
?
0
:
column
===
0
||
column
===
row
?
1
:
binomialCoefficient
(
row
-
1
,
column
-
1
)
+
binomialCoefficient
(
row
-
1
,
column
);
cache
[
row
][
column
]
=
result
;
return
result
;
}
WorkerScript
.
onMessage
=
function
(
message
)
{
var
result
=
binomialCoefficient
(
message
.
row
,
message
.
column
);
WorkerScript
.
sendMessage
({
row
:
message
.
row
,
column
:
message
.
column
,
result
:
result
});
}
projects/pascals_triangle_aurora/rpm/ru.auroraos.PascalsTriangle.spec
0 → 100644
Просмотр файла @
5b5c8397
Name: ru.auroraos.PascalsTriangle
Summary: Pascal's Triangle
Version: 1.0
Release: 1
Group: Qt/Qt
License: BSD-3-Clause
URL: https://auroraos.ru
Source0: %{name}-%{version}.tar.bz2
Requires: sailfishsilica-qt5 >= 0.10.9
BuildRequires: pkgconfig(auroraapp)
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Qml)
BuildRequires: pkgconfig(Qt5Quick)
BuildRequires: desktop-file-utils
%description
WorkerScript example
%prep
%setup -q -n %{name}-%{version}
%build
%qmake5
%make_build
%install
rm -rf %{buildroot}
%qmake5_install
desktop-file-install --delete-original --dir %{buildroot}%{_datadir}/applications %{buildroot}%{_datadir}/applications/*.desktop
%files
%defattr(-,root,root,-)
%{_bindir}/%{name}
%defattr(644,root,root,-)
%{_datadir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.png
projects/pascals_triangle_aurora/ru.auroraos.PascalsTriangle.desktop
0 → 100644
Просмотр файла @
5b5c8397
[Desktop Entry]
Type=Application
X-Nemo-Application-Type=silica-qt5
Icon=ru.auroraos.PascalsTriangle
Exec=/usr/bin/ru.auroraos.PascalsTriangle
Name=Pascal's Triangle
Name[ru]=Треугольник Паскаля
[X-Application]
Permissions=
OrganizationName=ru.auroraos
ApplicationName=PascalsTriangle
ExecDBus=/usr/bin/ru.auroraos.PascalsTriangle
projects/pascals_triangle_aurora/ru.auroraos.PascalsTriangle.pro
0 → 100644
Просмотр файла @
5b5c8397
# SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <edu@omp.ru>
#
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
TARGET
=
ru
.
auroraos
.
PascalsTriangle
CONFIG
+=
\
auroraapp
\
SOURCES
+=
\
src
/
main
.
cpp
\
DISTFILES
+=
\
rpm
/
$$
{
TARGET
}.
spec
\
AURORAAPP_ICONS
=
86
x86
108
x108
128
x128
172
x172
projects/pascals_triangle_aurora/src/main.cpp
0 → 100644
Просмотр файла @
5b5c8397
// SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <edu@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#include
<auroraapp.h>
#include
<QtQuick>
int
main
(
int
argc
,
char
*
argv
[])
{
QScopedPointer
<
QGuiApplication
>
application
(
Aurora
::
Application
::
application
(
argc
,
argv
));
application
->
setOrganizationName
(
QStringLiteral
(
"ru.auroraos"
));
application
->
setApplicationName
(
QStringLiteral
(
"PascalsTriangle"
));
QScopedPointer
<
QQuickView
>
view
(
Aurora
::
Application
::
createView
());
view
->
setSource
(
Aurora
::
Application
::
pathTo
(
QStringLiteral
(
"qml/PascalsTriangle.qml"
)));
view
->
show
();
return
application
->
exec
();
}
projects/pascals_triangle_qtcreator/PascalsTriangle.pro
0 → 100644
Просмотр файла @
5b5c8397
# SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <edu@omp.ru>
#
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
QT
+=
\
quick
\
CONFIG
+=
\
c
++
17
\
DEFINES
+=
\
QT_DEPRECATED_WARNINGS
\
SOURCES
+=
\
src
/
main
.
cpp
\
RESOURCES
+=
\
qml
.
qrc
\
qnx
:
target
.
path
=
/
tmp
/
$$
{
TARGET
}
/
bin
else
:
unix
:
!
android
:
target
.
path
=
/
opt
/
$$
{
TARGET
}
/
bin
!
isEmpty
(
target
.
path
)
:
INSTALLS
+=
target
projects/pascals_triangle_qtcreator/qml.qrc
0 → 100644
Просмотр файла @
5b5c8397
<RCC>
<qresource prefix="/">
<file>qml/js/worker.js</file>
<file>qml/main.qml</file>
<file>qml/PascalsTriangle.qml</file>
</qresource>
</RCC>
projects/pascals_triangle_qtcreator/qml/PascalsTriangle.qml
0 → 100644
Просмотр файла @
5b5c8397
// SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <edu@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import
QtQuick
2.0
Item
{
id
:
root
property
real
fontSize
:
width
/
16
function
requestResult
()
{
resultText
.
text
=
"
Loading...
"
;
worker
.
sendMessage
({
row
:
rowEdit
.
value
,
column
:
columnEdit
.
value
});
}
WorkerScript
{
id
:
worker
source
:
"
js/worker.js
"
onMessage
:
{
if
(
messageObject
.
row
===
rowEdit
.
value
&&
messageObject
.
column
===
columnEdit
.
value
)
{
if
(
!
messageObject
.
result
)
resultText
.
text
=
"
Column must be <= Row
"
;
else
resultText
.
text
=
messageObject
.
result
;
}
}
}
Column
{
objectName
:
"
layout
"
width
:
parent
.
width
Text
{
id
:
resultText
objectName
:
"
resultText
"
height
:
root
.
height
/
2
width
:
parent
.
width
wrapMode
:
Text
.
WordWrap
horizontalAlignment
:
Text
.
AlignHCenter
verticalAlignment
:
Text
.
AlignVCenter
font.pixelSize
:
fontSize
}
Row
{
objectName
:
"
inputLayout
"
anchors.horizontalCenter
:
parent
.
horizontalCenter
Text
{
id
:
rowLabel
objectName
:
"
rowLabel
"
text
:
"
Row:
"
font.pixelSize
:
fontSize
}
TextEdit
{
id
:
rowEdit
objectName
:
"
rowEdit
"
property
int
value
:
Number
(
text
)
text
:
"
0
"
width
:
(
root
.
width
)
/
5
font.pixelSize
:
fontSize
onValueChanged
:
{
console
.
log
(
"
row changed:
"
+
value
);
requestResult
();
}
}
Text
{
id
:
columnLabel
objectName
:
"
columnLabel
"
text
:
"
Column:
"
font.pixelSize
:
fontSize
}
TextEdit
{
id
:
columnEdit
objectName
:
"
columnEdit
"
property
int
value
:
Number
(
text
)
text
:
"
0
"
width
:
(
root
.
width
)
/
5
font.pixelSize
:
fontSize
onValueChanged
:
{
console
.
log
(
"
column changed:
"
+
value
);
requestResult
();
}
}
}
}
}
projects/pascals_triangle_qtcreator/qml/js/worker.js
0 → 100644
Просмотр файла @
5b5c8397
// SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <edu@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
var
cache
=
[];
function
binomialCoefficient
(
row
,
column
)
{
if
(
!
cache
[
row
])
cache
[
row
]
=
[];
if
(
cache
[
row
][
column
]
!==
undefined
)
return
cache
[
row
][
column
];
console
.
log
(
row
,
column
);
var
result
=
row
<
column
?
0
:
column
===
0
||
column
===
row
?
1
:
binomialCoefficient
(
row
-
1
,
column
-
1
)
+
binomialCoefficient
(
row
-
1
,
column
);
cache
[
row
][
column
]
=
result
;
return
result
;
}
WorkerScript
.
onMessage
=
function
(
message
)
{
var
result
=
binomialCoefficient
(
message
.
row
,
message
.
column
);
WorkerScript
.
sendMessage
({
row
:
message
.
row
,
column
:
message
.
column
,
result
:
result
});
}
Пред
1
2
След
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать