1. JavaScript / Говнокод #19255

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    //  Qt QML >:D
    UI_Button
    {
            id: bt_connect
            height: 40
            width: 150
            radiusBorder: 20
            anchors.right: led_connection.left
            anchors.rightMargin: 10
            anchors.verticalCenter: parent.verticalCenter
            textOn: qsTr("Отключиться")
            textOff: qsTr("Подключиться")
            state: putState(QVipGUI.btConnection)
            onClicked:{
                if(QVipGUI.btConnection !== GuiDefines.DEF_STATE_DIMMED) {
                    if(QVipGUI.btConnection === GuiDefines.DEF_STATE_OFF) {
                        QVipGUI.setLedConnection(GuiDefines.DEF_STATE_OFF)
                        QVipGUI.method_ActionGui(GuiDefines.ID_ACTION_CONNECT)
                        QVipGUI.method_ActionGui(GuiDefines.ID_ACTION_GETPORT) // <!>
    
                        var i = 0;
                        while(++i < 1000000){};
                        QVipGUI.method_ActionGui(GuiDefines.ID_ACTION_GETCONF);
    
    
                    }
                    else {
                        QVipGUI.method_ActionGui(GuiDefines.ID_ACTION_DISCONNECT)
                    }
                }
            }
     }

    Qt-среда, язык описания интерфейса - QML >:D

    Запостил: eremite88, 28 Декабря 2015

    Комментарии (8) RSS

    • в цикле реализована задержка
      Ответить
    • окай, код-говно, while "много" "ничего не делать" доставляет, но как ты, тс, видишь правильное решение проблемы?
      Ответить
      • http://doc.qt.io/qt-5/qml-qtqml-timer.html
        Ответить
        • Поздравляю, ваше решение через QML-таймер можно будет запостить следующим же постом в категории.
          Ответить
          • Ну оно хотя бы прогу вешать не будет...
            Ответить
            • Не спорю. Но даже более правильным решением будет вынести весь обработчик нажатия кнопки в c++-код, а задержку реализовать через QEventLoop
              Ответить
    • починили, теперь и задержка теперь не требуется, там у нас проблема оказалась в другом, но все равно не пойму почему задержка спасала от падения проги)))
      мы использовали очередь, что-то вроде этого QQueue<QQueue<Task>> m_queue;
      Это как видится очередь очередей, т.е. у каждой задачи направленной ядру сграфического интерфейса есть свои задачи в ядре...
      И есть лист для хранения переменных состояния выполнения для каждой задачи, при том что переменная присваивается указателю в каждом объекте Task чтобы подзадачи были связаны одной переменной в памяти, а проблема заключалась в том что мы использовали для хранения данных не QList а QVector, и присваивая адрес указателю через & теряли данные впоследствии, т.к последующие данные смещались вначало по адресации, а в последних задачах в объектах Task в по переменной-указателю state хранился уже мусор, и тогда программа выходила в исключение, но почему задержка помогала до сих пор не пойму))
      Ответить
      • а нет, все понятно, задачи успевали просто выполниться, все просто)))
        Ответить

    Добавить комментарий