<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Модули/ПуÑкатель Qt GUI - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="../../en/files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="../index.html"><img alt="OpenSCADA" src="../../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="ru">Модули/ПуÑкатель Qt GUI</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="ru"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Modules%2FQTStarter&action=page&filter=&language=ru" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Modules/QTStarter" title="Modules/QTStarter">Modules/QTStarter</a> and the translation is 97% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../../en/Modules/QTStarter.html" title="Modules/QTStarter (100% translated)">English</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">mRussian</span> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../uk/Modules/QTStarter.html" title="Модулі/ПуÑкач Qt GUI (100% translated)">УкраїнÑька</a></div></div> <table class="wikitable"> <tr> <th> Модуль </th> <th> Ð˜Ð¼Ñ </th> <th> ВерÑÐ¸Ñ </th> <th> Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ </th> <th> ИÑточник </th> <th> Языки </th> <th> Платформы </th> <th> Тип </th> <th> Ðвтор </th></tr> <tr> <td> <a href="../Modules/QTStarter.html" title="Special:MyLanguage/Modules/QTStarter">QTStarter</a> </td> <td> Qt GUI пуÑкатель </td> <td> 6.0 </td> <td> GPL2 </td> <td> ui_QTStarter.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> ПользовательÑкие интерфейÑÑ‹ </td> <td> Роман Савоченко </td></tr> <tr> <th colspan="9"> ОпиÑание </th></tr> <tr> <td colspan="9"> ПредоÑтавлÑет Qt GUI пуÑкатель. Qt-пуÑкатель ÑвлÑетÑÑ ÐµÐ´Ð¸Ð½Ñтвенным и обÑзательным компонентом Ð´Ð»Ñ Ð²Ñех GUI модулей, оÑнованных на библиотеке Qt. <ul><li> <b>ÐžÐ±Ñ‰Ð°Ñ Ñ‚Ñ€ÑƒÐ´Ð¾Ñ‘Ð¼ÐºÐ¾ÑÑ‚ÑŒ:</b> > 10 <span title="человеко-дней, 1ЧД — 10 чаÑов">ЧД<sup style="color: blue">[!]</sup></span></li> <li> <b>СпонÑировано, реализации Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° 0.5 <span title="человеко-дней, 1ЧД — 10 чаÑов">ЧД<sup style="color: blue">[!]</sup></span>:</b> Хайди Рамезани</li> <li> <b><a href="../../en/To_do.html" title="Special:MyLanguage/Works/To do">Задачи (To Do)</a>:</b></li></ul> <dl><dd> - реализовать менеджер подпроектов Ð´Ð»Ñ Ð¸Ñ… запуÑка в отдельных процеÑÑах, но Ñ Ð¸Ñ… хранением и управлением в одном конфигурационном файле проекта, Ð´Ð»Ñ Ð²Ñ‹Ñоко-надёжных конфигураций;</dd> <dd> - реализовать менеджер фонового иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑов.</dd></dl> </td></tr></table> <p>Модуль предоÑтавлÑет в OpenSCADA пуÑкатель GUI модулей, оÑнованных на многоплатформенной библиотеке <a class="external text" href="http://qt.io" rel="nofollow noreferrer noopener" target="_blank">Qt</a> графичеÑкого пользовательÑкого интерфейÑа (GUI), изначально Ñозданной фирмой <a class="external text" href="http://www.trolltech.com" rel="nofollow noreferrer noopener" target="_blank">TrollTech</a>. Также, модуль реализует Ñлементы менеджера проектов OpenSCADA. Отдельный модуль Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка Qt GUI модулей нужен ввиду необходимоÑти организации однопотокового иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð²Ñех компонентов визуализации Qt и централизованной инициализации главного объекта Qt-библиотеки — QApplication. </p> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.D0.92.D1.81.D1.82.D1.83.D0.BF.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5"><span class="tocnumber">1</span> <span class="toctext">Ð’Ñтупление</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#Qt_.D0.BC.D0.BE.D0.B4.D1.83.D0.BB.D0.B8_OpenSCADA"><span class="tocnumber">2</span> <span class="toctext">Qt модули OpenSCADA</span></a></li> <li class="toclevel-1 tocsection-3"><a href="#.D0.9F.D1.80.D0.BE.D0.B5.D0.BA.D1.82.D1.8B_OpenSCADA"><span class="tocnumber">3</span> <span class="toctext">Проекты OpenSCADA</span></a></li> <li class="toclevel-1 tocsection-4"><a href="#.D0.92.D0.B8.D0.B4_.D0.B8_.D0.BE.D1.89.D1.83.D1.89.D0.B5.D0.BD.D0.B8.D0.B5"><span class="tocnumber">4</span> <span class="toctext">Вид и ощущение</span></a></li> <li class="toclevel-1 tocsection-5"><a href="#Configuration"><span class="tocnumber">5</span> <span class="toctext"><span>Configuration</span></span></a></li> <li class="toclevel-1 tocsection-6"><a href="#API_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F"><span class="tocnumber">6</span> <span class="toctext">API Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</span></a></li> </ul> </div> <h2><span class="mw-headline" id=".D0.92.D1.81.D1.82.D1.83.D0.BF.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5"><span class="mw-headline-number">1</span> Ð’Ñтупление</span></h2> <p>Изначально Ñтот модуль Ñоздаёт отдельный поток Ð´Ð»Ñ Ð¾Ñновного потока Qt, где еÑÑ‚ÑŒ возможноÑÑ‚ÑŒ Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñкрана динамичеÑкой заÑтавки, поÑкольку оÑновные задачи OpenSCADA продолжают иÑполнение в оÑновном потоке. Однако верÑÐ¸Ñ Qt5 Ñтала оÑобенно чувÑтвительной к иÑполнению в неглавном потоке, поÑтому Ð´Ð»Ñ Ð½ÐµÑ‘ в OpenSCADA добавлена Ñ‚Ð°ÐºÐ°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ÑŒ, но Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñообщений в заÑтавке из ÑервиÑного потока до и поÑле момента Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½Ð° иÑполнение ним первичных задач. Ð”Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ñтой возможноÑти предуÑмотрен параметр запуÑка <i>--QtInNotMainThread</i>, который включает иÑполнение в неглавном потоке, Ð´Ð»Ñ Qt4, ÑоответÑтвенно, по умолчанию, оÑущеÑтвлÑетÑÑ Ð¸Ñполнение в главном, что типично Ð´Ð»Ñ Qt5. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:606px;"><a class="image" href="http://oscada.org/wiki/File:QTStarter_splash_ru.png"><img class="thumbimage" height="304" src="../files/QTStarter_splash_ru.png" width="604" /></a> <div class="thumbcaption">Fig.1. ДинамичеÑкий Ñкран заÑтавки модулÑ.</div></div></div></div> <p>Диалоговое окно пуÑÐºÐ°Ñ‚ÐµÐ»Ñ (РиÑ.2) в общем предоÑтавлÑет: </p> <ul><li> выбор приÑутÑтвующих Qt GUI модулей, может отÑутÑтвовать в Ñлучае первичного запуÑка Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° только проекта OpenSCADA;</li> <li> выбор приÑутÑтвующих OpenSCADA проектов Ð´Ð»Ñ Ð¸Ñ… выбора или переключениÑ;</li> <li> выход из OpenSCADA;</li> <li> меню помощи Ñ Ð¿ÑƒÐ½ÐºÑ‚Ð°Ð¼Ð¸: "Про", "Про Qt", "РуководÑтво QTStarter" (F1), "РуководÑтво OpenSCADA 0.9" и "Что Ñто" (Shift+F1).</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:463px;"><a class="image" href="http://oscada.org/wiki/File:QTStarter_dialog_ru.png"><img class="thumbimage" height="673" src="../files/QTStarter_dialog_ru.png" width="461" /></a> <div class="thumbcaption">РиÑ.2. Диалоговое окно пуÑÐºÐ°Ñ‚ÐµÐ»Ñ Ñтого модулÑ.</div></div></div></div> <p>Ð’ Ñлучае отÑутÑÑ‚Ð²Ð¸Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð²Ð¾Ð³Ð¾ окна запуÑка и вÑех окон модулей Qt GUI, программа может быть запущена или Ñвёрнута в ÑиÑтемный лоток (РиÑ.3), Ñозданный Ñтим модулем. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:386px;"><a class="image" href="http://oscada.org/wiki/File:QTStarter_systray_ru.png"><img class="thumbimage" height="181" src="../files/QTStarter_systray_ru.png" width="384" /></a> <div class="thumbcaption">РиÑ.3. Проект "ÐГЛКС", запущенный или Ñвёрнутый в ÑиÑтемный лоток.</div></div></div></div> <p>Модулем оÑущеÑтвлÑетÑÑ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ функции ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑеанÑа программы при принудительном закрытии ÑиÑтемой, Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы предотвратить попытки воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñтого ÑеанÑа при Ñтарте ÑиÑтемы, поÑкольку OpenSCADA Ñтого не нужно. </p><p>Модулем предуÑматриваетÑÑ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° ÑмулÑции правой клавиши мыши Ð´Ð»Ñ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ð¹ Ñ ÑенÑорным Ñкраном, вроде Android, поÑкольку Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ‡Ð°Ñто предуÑматривает контроль иÑключительно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ контекÑтного меню. ÐмулÑÑ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ÑÑ ÑƒÑтановкой параметра командной Ñтроки <i>--simulRightMKeyTm=<tm></i>, при Ñтарте программы, где указываетÑÑ Ð²Ñ€ÐµÐ¼Ñ ÑƒÐ´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ (типично две Ñекунды) Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ Ð»ÐµÐ²Ð¾Ð¹ клавиши мыши (или на Ñкране) Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ клавиши мыши и контекÑтной помощи. ÐмулÑÑ†Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ клавиши не выключает-откладывает первичных Ñообщений левой клавиши, ÑоответÑтвенно её общие дейÑÑ‚Ð²Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ работать корректно, но возможны неÑоответÑÑ‚Ð²Ð¸Ñ Ð² меÑтах где первичное Ñообщение что-то переключает и Ñмулированное Ñообщение уже пойдёт не по адреÑу! </p> <h2><span class="mw-headline" id="Qt_.D0.BC.D0.BE.D0.B4.D1.83.D0.BB.D0.B8_OpenSCADA"><span class="mw-headline-number">2</span> Qt модули OpenSCADA</span></h2> <p>Ð”Ð»Ñ Ð·Ð°Ð¿ÑƒÑка Qt GUI модулей иÑпользуетÑÑ Ñ€Ð°Ñширенный Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° функций модулей. Данный Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°ÐµÑ‚ ÑкÑпортирование функций внешними модулÑми. Ð’ нашем Ñлучае Qt GUI модули должны ÑкÑпортировать Ñледующие функции: </p> <ul><li> <i>QIcon icon();</i> — передаёт объект иконки вызываемого модулÑ, Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ.</li> <li> <i>QMainWindow *openWindow();</i> — Ñоздаёт объект главного окна данного Qt GUI Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¸ передаёт его пуÑкателю. Может возвращать NULL в Ñлучае невозможноÑти ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ окна.</li></ul> <p>Ð”Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸, Qt GUI модуль должен определÑÑ‚ÑŒ информационный Ñлемент Ð¼Ð¾Ð´ÑƒÐ»Ñ "SubType" как "Qt". ИÑÑ…Ð¾Ð´Ñ Ð¸Ð· Ñтого признака "ПуÑкатель" Ñ Ð½Ð¸Ð¼ работает. </p><p>ПоÑле Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° главного окна "ПуÑкатель" его проÑто отображает, а окно Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ‚ Ñамо дополнительно добавить Ñлементы "ПуÑкателÑ", в виде общего Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ Qt модулей OpenSCADA, Ð´Ð»Ñ Ð¸Ñ… вызова из Ñтого окна. Общий перечень Qt модулей OpenSCADA может добавлÑÑ‚ÑŒÑÑ Ð² меню или панель инÑтрументов окна, путём вызова Ñлота "makeStarterMenu(QWidget *mn = NULL)" клаÑÑа QApplication от "ПуÑкателÑ", где в <i>mn</i> указываетÑÑ Ð²Ð¸Ð´Ð¶ÐµÑ‚ контейнера дейÑтвий (QAction), или меню главного окна, Ð´Ð»Ñ NULL. </p><p>Ð”Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Qt GUI модулей, которые запуÑкаютÑÑ Ð¿Ñ€Ð¸ Ñтарте, модуль Ñтартера Ñодержит конфигурационное поле "StartMod". Ð’ Ñтом поле запиÑываютÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ñ‹ модулей, которые запуÑкаютÑÑ. Конфигурационное поле "StartMod" можно определить в конфигурационном файле, а также в ÑиÑтемной таблице БД ("SYS") через диалог <a href="#Cfg">конфигурации модулÑ</a> (риÑ.4). </p><p>Ð’ Ñлучае Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¾ÐºÐ¾Ð½ вÑех Qt GUI модулей или запуÑке без Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка в поле "StartMod", "ПуÑкатель" Ñоздаёт ÑобÑтвенное диалоговое окно (риÑ.2). ЕÑли поле "CloseToTray" конфигурационного файла или <a href="#Cfg">конфигурацией модулÑ</a> (риÑ.4) уÑтановлено то в Ñтом Ñлучае оÑущеÑтвлÑетÑÑ Ñворачивание программы в ÑиÑтемный лоток (риÑ.3). </p> <h2><span class="mw-headline" id=".D0.9F.D1.80.D0.BE.D0.B5.D0.BA.D1.82.D1.8B_OpenSCADA"><span class="mw-headline-number">3</span> Проекты OpenSCADA</span></h2> <p>С интеграцией в OpenSCADA Ñлементов менеджера проектов Ñтот модуль получил функцию выбора ÑущеÑтвующих и ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… проектов OpenSCADA, в ÑпиÑке проектов и команд проектов (риÑ.2). Ðа данный момент предуÑмотрено два режима диалогового окна пуÑÐºÐ°Ñ‚ÐµÐ»Ñ (риÑ.2), Ñто — режим первичного-инициирующего запуÑка и режим иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ проекта. </p><p>Первичный-инициирующий режим, по факту, ÑвлÑетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð¼ запуÑка без определённого проекта и предуÑматривает именно выбор проекта Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² другой режим, и ÑоответÑтвенно прÑчет ÑпиÑок Qt GUI модулей, даже еÑли они загружены в инициирующую конфигурацию. </p><p>Ð’ режиме иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð° работают вÑе типовые механизмы, а именно Ñто вызов Qt GUI модулей и запуÑк-Ñворачивание в ÑиÑтемный лоток, а диалоговое окно пуÑÐºÐ°Ñ‚ÐµÐ»Ñ (риÑ.2) Ñодержит перечень приÑутÑтвующих Qt GUI модулей и информацию про запущенный проект, в заголовке окна. </p><p>Ð’ перечне проектов пользователю (через контекÑтное меню) дополнительно предоÑтавлÑетÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ÑŒ удалить неиÑполнÑемые проекты, зарезервировать — Ñоздать резервную копию, и воÑÑтановить проекты из выбранной резервной копии. </p><p>Кроме непоÑредÑтвенно названий проектов в перечне проектов, Ñправа от названиÑ, приведено их ÑоÑтоÑние — "текущий", "выполнÑетÑÑ" и "{N} рез.копий". СоÑтоÑние "текущий" означает, что оÑущеÑтвлÑетÑÑ Ð¸Ñполнение именно Ñтого проекта. СоÑтоÑние "иÑполнÑетÑÑ" указывает на наличие файла Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтвенного запуÑка, а ÑоответÑтвенно и иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°, и отдельно от Ñтого проекта еÑли Ñ€Ñдом не указано ÑоÑтоÑние "текущий". Выбрать и попробовать переключитьÑÑ Ð½Ð° проект в ÑоÑтоÑнии "иÑполнÑетÑÑ" можно, принÑв предупреждение, но еÑли Ñтот проект реально ÑÐµÐ¹Ñ‡Ð°Ñ Ð¸ÑполнÑетÑÑ Ð¸ наличие файла блокировки не ÑвлÑетÑÑ Ð¾Ñтаточным поÑле аварийного Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ то программа, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ÑÑ, проÑто завершитÑÑ! СоÑтоÑние "{N} рез.копий" указывает на наличие указанного количеÑтва резервных копий проекта. </p> <h2><span class="mw-headline" id=".D0.92.D0.B8.D0.B4_.D0.B8_.D0.BE.D1.89.D1.83.D1.89.D0.B5.D0.BD.D0.B8.D0.B5"><span class="mw-headline-number">4</span> Вид и ощущение</span></h2> <p>Ð’ ÑвÑзи Ñ Ñ€Ð°Ñширением границ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ OpenSCADA на мобильные программные платформы вроде Maemo, MeeGo, Android и чаÑÑ‚Ñ‹Ñ… Ñлучаев неÑоответÑÑ‚Ð²Ð¸Ñ Ð²Ð¸Ð´Ð° программ на библиотеках Qt4 и Qt5 к Ñовременным окружениÑм рабочего Ñтола, Ñтот модуль был раÑширен ÑобÑтвенным механизмом ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²Ð¸Ð´Ð° и ощущений конечного визуального интерфейÑу. </p><p>Ð’ целом модуль ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ñ€ÐµÐ´ÑƒÑматривает контроль за общим: Ñтилем виджетов Qt, общим шрифтом, палитрой интерфейÑа и таблицами каÑкадных Ñтилей. Ðтот контроль оÑущеÑтвлÑетÑÑ Ñ‡ÐµÑ€ÐµÐ· параметры конфигурационного файла "Style", "Font", "Palette", "StyleSheets" и <a href="#Cfg">конфигурацией модулÑ</a> (риÑ.4). </p><p>Также, модулем предуÑмотрено оформление наработок отдельных видов и ощущений в библиотеке композитного характера, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€ÑƒÐµÑ‚ÑÑ Ð² таблице конфигурационного файла Ñо Ñтруктурой: <b>LookFeel(<u>NAME</u>, FONT, STYLE, PALETTE, STL_SHTS)</b>. </p><p>Т.е., Ð´Ð»Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ñ‹Ñ… уÑтройÑтв или наперёд извеÑтных ÑпецифичеÑких окружений рабочего Ñтола, нужный вид и Ð¾Ñ‰ÑƒÑ‰ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ предварительно уÑтанавливать в конфигурационном файле пакетов программы, и Ð´Ð»Ñ Ð²Ñех можно быÑтро изменить поÑле уÑтановки, выбрав нужный из библиотеки. </p> <h2><span class="mw-headline" id="Configuration"><span class="mw-headline-number">5</span> <span id="Cfg" title="#Cfg">Configuration</span></span></h2> <p>To configure the functions shown above, the module provides the ability to configure their parameters through the OpenSCADA control interface (Fig. 4): </p> <ul><li> Section "Module options": <ul><li> <i>Qt modules for startup</i>.</li> <li> <i>Collapse or startup to the system tray</i>.</li> <li> <i>Sessions control-restart</i> — that is applied at the next start and works only for directly started projects without the starter dialog window (Fig.2) of the module. The modes are supported: <ul><li> "if running" — if it is still running when the session is shut down;</li> <li> "anyway" — wants to be started at the start of the next session; <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> on most Linux/X11 desktops that is the same as "if running";</li> <li> "immediately" — wants to be started immediately whenever it is not running; <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> on most Linux/X11 desktops that is the same as "if running";</li> <li> "never" — does not want to be restarted automatically.</li></ul></li></ul></li> <li> Section "Look and feels", changes are not applied immediately and require overload: <ul><li> <i>Known profiles</i> — a combobox with a list of profiles in the library and a series of commands over the current profile: <ul><li> "<Clear>" — clear the current profile;</li> <li> "<Read back>" — read back the profile from the current Qt settings, only in the cleaned profile items.</li> <li> "{Profile name}" — read the value from the specified profile name and add-combine with the current one if it is not empty.</li></ul></li> <li> <i>Widgets style</i> — the profile field allows you to select from the list known styles in this configuration Qt and is not composite.</li> <li> <i>Common font</i> — the Qt common font which specifies icons size also.</li> <li> <i>Palette</i> — the field of the color profile of the interface in three groups of rows: active, disabled, inactive. But with twenty colors in the group line, separated by the character ',': WindowText(0), Button(1), Light(2), Midlight(3), Dark(4), Mid(5), Text(6), BrightText(7), ButtonText(8), Base(9), Window(10), Shadow(11), Highlight(12), HighlightedText(13), Link(14), LinkVisited(15), AlternateBase(16), NoRole(17), ToolTipBase(18), ToolTipText(19). The profile allows you to define only the colors you want, leaving the indeterminate as the empty ones, which determines the composite palette, that is filling the voids with another library profile.</li> <li> <i>Style Sheets</i> — the field of Cascading Style Sheets Profile (CSS), the composite of which is to add CCS rules at the end of the current profile.</li></ul></li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:775px;"><a class="image" href="http://oscada.org/wiki/File:QTStarter_cfg.png"><img class="thumbimage" height="715" src="../../en/files/QTStarter_cfg.png" width="773" /></a> <div class="thumbcaption">РиÑ.4. Страница конфигурации модулÑ.</div></div></div></div> <h2><span class="mw-headline" id="API_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F"><span class="mw-headline-number">6</span> API Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</span></h2> <p><b>Объект Ð¼Ð¾Ð´ÑƒÐ»Ñ (SYS.UI.QTStarter)</b> </p> <ul><li> <i>Array sensors()</i> — получить вÑе доÑтупные ÑенÑоры от Qt mobility, возвращает "false" еÑли не доÑтупно ни одного ÑенÑора.</li></ul> </div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Modules/QTStarter/ru">Modules/QTStarter/ru</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body> </html>