Russian Qt Forum
Ноябрь 22, 2024, 12:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 ... 6   Вниз
  Печать  
Автор Тема: JS в приложении на Qt/Ком порты/ и прочие глупые вопросы  (Прочитано 34814 раз)
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« : Август 17, 2020, 08:53 »

Всем доброе время суток!

предисловие:
Решил совместить написание одной небольшой утилитки с изучением Qt, все время писал на Builder и както не парился с другим, в последний год много на linux но все с консоли под консоль и вот в общем идея крос платформиности меня пробрала до конца и... и у вас появился еще один лаймер с кучей тупых вопросов ...Улыбающийся

Суть вопроса (ов):

Основная мысль утилки это написание программы для программирования/настройки разных дивайсов ... частотники модули прочее оборудование седящее на интерфейсах RS-232/485 в итоге родилась идея написать оболочку на сях , с всякими крутилками таблицами регистров настроеек и прочего что может пригодиться, в ini файл сунуть профиль устройства и файлик на JS с маленьким скриптом для работы с даным устройством. Соответсвенно вся коммуникационная ботва , протоколы и прочее будут уже на сях реализованы...

и так сами вопросы :
я нашел в qt  такую вещь как ScriptEngine  и примеры но текста мало ... в свзи с чем вопросы :
можно ли в этих JS реализовать взаимодействие с объектом , как передать в JS этот объект ?
етсь ли готовый компонент редактора JS с подсветкой, что бы сунуть и не париться с написанием своего
есть ли парсер INI файлов ?
Есть ли возможность парсить  JSON
Чем правильнее работать с COM портами ?
« Последнее редактирование: Август 17, 2020, 09:14 от Faster » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 17, 2020, 09:09 »

Я не знаю, что такое липарсер, но он есть https://doc.qt.io/qt-5/qsettings.html
JSON парсинг есть
Для COM портов https://doc.qt.io/qt-5/qserialport.html
Зачем тебе JS я так и не понял, Если тебе что-то скриптовое нужно, то возьми лучше связку python/Qt (PyQt).
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #2 : Август 17, 2020, 09:17 »

Цитировать
Зачем тебе JS я так и не понял
ну скажем так JS прям сильно проще и например за долгое время общения я видел массу налоадчиков знающих JS и не одного  (себя не считаю) знающих питона
« Последнее редактирование: Август 17, 2020, 09:22 от Faster » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 17, 2020, 09:31 »

По мне, так python лучше подходит для этих вещей. JS ниша все таки ближе к web.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #4 : Август 17, 2020, 09:36 »

Оч странно но вот лично я к питону дышу ровно , считаю его не рыбой не мясом ,  тоесть и не настолько точен для вэба как PHP и не настолько хорош как Си для компила .. хотя сейчас с тцать проходными оптимизаторами можно и бэйсик комилять ... не парится не кто ... но лично мне не очень ...

JS простой нет замут и затыков мне кажется он самый удачный вариант , я уже аналогичные вещи делал ... ина билде это вообще не проблема  но ме вот именно Qt счас  интересен .. воти задаю вопросы . ато что сунулся а тут все очень непривычно ...
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #5 : Август 17, 2020, 09:37 »

Цитировать
Возьми любую книжку по Qt и почитай введение. А еще лучше, открой Qt examples и посмотри как там все делается.
Есть рекомендации ?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Август 17, 2020, 09:42 »

Можешь вот эту найти в pdf и прочитать https://ekniga.org/kompyuternaya-literatura/programmirovanie/135173-qt-4-programmirovanie-gui-na-s.html

Это про Qt4, но к 5 версии тоже подойдет, ибо основные принципы остались теми же.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Август 17, 2020, 13:41 »


я нашел в qt  такую вещь как ScriptEngine  и примеры но текста мало ... в свзи с чем вопросы :
можно ли в этих JS реализовать взаимодействие с объектом , как передать в JS этот объект ?

Этот модуль объявлен deprecated и будет убран в Qt6, вместо него надо использовать QJSEngine из модуля QtQml
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #8 : Август 18, 2020, 04:47 »

Цитировать
Этот модуль объявлен deprecated
Спасибо  это уже минус одна потенциальная проблема в будущем...

тут вообще стоит спросить разрешения писать в приват уже наверно чтобы не создавать темы если честно...

но пока спрошу тут , я уже озвучевал что писал много на билдях ну ина визуале  , Qt  ставит в тупик и само еобидное что все называется по другому все интерфейсы другие сходства мало  прям опечален ... (я не говорю тчо это не правильно ...)
в общем тупой вопрос в VC/Bulder у компонента есть такая вещб как Anchors / Align
с помощью них можно к примеру кнопку выровнять по центру или зацепить за правую позицию окна , тоесть при растягивании оного она поедет вправо ... уже час гуглю ине могу догнать как это реализовать тут ... точнее нашел но именно кодлом .. а что визульны йредактор н едает возможности настроить такое сразу ?

не верю ...
вотищу дальше ...
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #9 : Август 18, 2020, 07:09 »

Ну в рбщем вот ворпрпос по серьезнее ...
осваиваю QJSEngine с документации . все перлодо момента...
Код:
    //Необходимые переменные
    QJSEngine myEngine;

    //создание объека  внтури движки
    QJSValue obj=myEngine.newObject();
    obj.engine()->evaluate("tst = {name: \"John\",age: 30};");

    //Создание глобальной переменной
    QJSValue b;
    b=123;
    myEngine.globalObject().setProperty("SPI", b);



    //связь с объектом созданным с c++
    QJSValue scriptCHK = myEngine.newQObject(ui->checkBox);
    myEngine.globalObject().setProperty("chk", scriptCHK); //chk.setChecked(true);

    ui->checkBox->setChecked(! ui->checkBox->isChecked()); //Не удалось завести из скрипта chk.isChecked();  почему не ясно , не видит данную функцию




    //Выполнение скрипта из текст бокса
    QJSValue ex=myEngine.evaluate(ui->textEdit->toPlainText());
    ui->textEdit_2->insertPlainText(ex.toString());
    ui->textEdit_2->insertPlainText("\n");


    //Получение глобальной перменной
    ui->textEdit_2->insertPlainText("SPI=");
    ui->textEdit_2->insertPlainText(myEngine.globalObject().property("SPI").toString());
    ui->textEdit_2->insertPlainText("\n");
в общем все связывается и импортирует и например если в эдит боксе нарисовать chk.setChecked(true);
и выполнить код то все отрабатывает и я могу релально чекедом дергать из скрипта
а вот елси попробовать прочесть сотсояние :
chk.isChecked();
или
chk.checkState();

то и в том и в том случае :
TypeError: Property 'isChecked' of object QCheckBox(0x2e72f50, "checkBox") is not a function

Причем в документацтии нет ни слова о данной проблеме или не возможности доступа к некторым функциям ...


ps очень опечалило QT отсутсвием конструкции __property .... прям вообще  кучи односложных Set/Get функций ... просто \ППЦ
Записан
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #10 : Август 18, 2020, 07:15 »

провернул из JS :
Код:
Object.keys(chk);
и получил :
Цитировать
objectName,modal,windowModality,enabled,geometry,frameGeometry,normalGeometry,x,y,pos,frameSize,size,width,height,rect,childrenRect,childrenRegion,sizePolicy,minimumSize,maximumSize,minimumWidth,minimumHeight,maximumWidth,maximumHeight,sizeIncrement,baseSize,palette,font,cursor,mouseTracking,tabletTracking,isActiveWindow,focusPolicy,focus,contextMenuPolicy,updatesEnabled,visible,minimized,maximized,fullScreen,sizeHint,minimumSizeHint,acceptDrops,windowTitle,windowIcon,windowIconText,windowOpacity,windowModified,toolTip,toolTipDuration,statusTip,whatsThis,accessibleName,accessibleDescription,layoutDirection,autoFillBackground,styleSheet,locale,windowFilePath,inputMethodHints,text,icon,iconSize,shortcut,checkable,checked,autoRepeat,autoExclusive,autoRepeatDelay,autoRepeatInterval,down,tristate,objectNameChanged,windowTitleChanged,windowIconChanged,windowIconTextChanged,customContextMenuRequested,setEnabled,setDisabled,setWindowModified,setWindowTitle,setStyleSheet,setFocus,update,repaint,setVisible,setHidden,show,hide,showMinimized,showMaximized,showFullScreen,showNormal,close,raise,lower,updateMicroFocus,grab,pressed,released,clicked,toggled,setIconSize,animateClick,click,toggle,setChecked,stateChanged
И да их тут нет , а так же нет любых функций в любом объекте объявленных как
const ? ну к примеру :
Код:
bool isChecked() const;

теперь вопрос это BUG или ФЫЧА ?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Август 18, 2020, 08:02 »

Забудь про Anchors - это то еще говнище. В Qt есть layouts и они очень удобные, достаточно просто разобраться.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Faster
Новичок

Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #12 : Август 18, 2020, 09:08 »

Шутка удачная ... пока что я вижу кучу проблем то что делалсь в три клика приводит к куче наваленного в визуале друг надруга ... пок ане вижу логики .. ну да ладно обычно она есть ...


вопрос хочу статус бар разметить , ну например с права разметсить пару текстовых надписей , мелкую картинку с визуальным статусом  ну и тав так  а так же с лева ждлинную текстовую строчку чтобы выводить общие сообщения  (showMsg курто но его накрывает виджет)

Есть мысли о том как это сделать ?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #13 : Август 18, 2020, 11:21 »

Читай Шлее, смотри примеры до посинения/просветления.

PS: На этом форуме есть тема "Общие вопросы" - там куча ссылок на разную документацию как на русском так и на английском.
« Последнее редактирование: Август 18, 2020, 11:45 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #14 : Август 18, 2020, 14:09 »


теперь вопрос это BUG или ФЫЧА ?

исполняемые из JS функции должны быть помечены как Q_INVOKABLE, но вам не нужно дергать эту функцию, у вас есть свойство объекта, которое можно записать напрямую (obj.checked = !obj.checked)
Записан
Страниц: [1] 2 3 ... 6   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.247 секунд. Запросов: 23.