Metelev
Metelev18 ноября 2018 г. 8:25

Управление кнопкой

Здравствуйте, недавно начал изучать Qt. Появилась идея реализовать движение кнопки (например по кругу или рисуя квадрат). Хотелось бы спросить совета у опытных ребят, может кто-то подскажет, как реализовать такую идейку?

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

15
Evgenii Legotckoi
  • 18 ноября 2018 г. 8:30

Добрый день!

Реализовать движение кнопки - не совсем понятна задача. Что значит движение кнопки? Перемещение самого объекта или реакция какого-то объекта на на нажатие клавиш.

Любую задачу в программировании стоит начинать с чёткой постановки задачи. "Что конкретно нужно сделать?" Тогда будет проще что-то посоветовать, поэтому опишите подробнее, что хотите сделать. Как это должно выглядеть. Просто сама фраза - "реализовать движение кнопки" не совсем до конца понятна.



    Metelev
    • 18 ноября 2018 г. 8:34

    Хорошо, я постараюсь.

    Мне хотелось бы просто создать кнопку на экране, при нажатии на которую мышью, она двигалась бы в определенном направлении, заранее описанном в коде. При повторном нажатии, она должна была бы остановиться и так далее... нажимаем-стоит,нажимаем-идет...



      Evgenii Legotckoi
      • 18 ноября 2018 г. 9:54

      В общем у меня было немного свободного времени и вот вам пример с кнопочкой и анимациями .

      Я не стал делать слишком сложный пример, но думаю, что это то, что вам нужно для начала. Также посмотрите в разделе Qt ещё статьи по игре в Qt и работе с графической сценой. Думаю, что это будет наиболее интересное для вас.

        Metelev
        • 18 ноября 2018 г. 12:23

        Евгений, попробовал запустить вашу программу. Вышло вот это. В чем проблема?

          Evgenii Legotckoi
          • 18 ноября 2018 г. 12:36

          Сборку запустите. Там автоматически генерируемый файл. Вы только открыли приложение как я понимаю, но не пытались запустить сборку. А то что там видите красным - это настройки креатора по статическому анализу. Я их обычно отключаю, мешаются и панику наводят даже в автоматически генерируемых местах, а новичков вводят в заблуждение.

            Metelev
            • 18 ноября 2018 г. 12:44

            Вроде все сделал, не помогло

              Evgenii Legotckoi
              • 18 ноября 2018 г. 12:54

              Так, знаю... У вас там MainWindow, вы просто скопировали код. В конце статьи есть ссылка на Git Repository со всем исходным кодом. Скачайте оттуда. У вас немного классы в наследовании неправильно сделаны, как я полагаю, да и наверняка ui файла или нет, или он для MainWindow. В общем из Git репозитория исходник скачайте.

                Metelev
                • 18 ноября 2018 г. 13:11

                Большое спасибо, все получилось, завтра начну изучать код.

                  Metelev
                  • 19 ноября 2018 г. 10:49

                  Евгений, скажите с помощью какой функции можно реализовать остановку кнопки после нажатия на нее? Но после следующего нажатия на нее она, чтобы снова пошла...

                    Evgenii Legotckoi
                    • 19 ноября 2018 г. 12:22

                    Ну там есть методы stop(), pause(), start() , что у QSequentialAnimationGroup, что у QPropertyAnimation.

                    У вас на каком уровне программирование на C++само по себе?

                      Metelev
                      • 19 ноября 2018 г. 12:34

                      Классы в теории изучил, практики совсем нет. Можно сказать с Qt в бою обучаюсь :)

                      Есть вопрос еще к вам. Недавно познакомился с github. Хотелось бы узнать, можешь подскажете пользователей, у кого много выполненных работ для начинающих Qt. Просто лично мне на примерах намного проще обучаться. С++ так и учил.

                        Evgenii Legotckoi
                        • 19 ноября 2018 г. 13:02

                        Я редко нахожу ответы на вопросы по Qt на гитхабе. Чаще хватает официальной документации или просто в поиске по интернету, или вот в заметках у самого себя.

                        Поэтому особо не отмечаю, кто и над чем работает. В общем-то для этого сделал на сайте социальные закладки, чтобы можно было собирать информацию о полезных ресурсах или проектах. Все пользователи могут пополнять закладки, так что, если найдёте что-то полезное, то можете добавить с небольшим описанием.

                        Если хотите набрать опыта, то придумайте себе проблему, которую нужно решить. То есть написать программу, которая будет что-то одно, что вам нужно, но что не делают например другие программы, или они слишком громоздкие и т.д. И пишите свою программу. А просто смотреть на примеры конечно хорошо, но без практического применения - это дело бесполезное.


                          Metelev
                          • 20 ноября 2018 г. 7:30

                          Большое спасибо за совет. Обязательно учту.

                            Metelev
                            • 22 ноября 2018 г. 11:13

                            Евгений, здравствуйте. Я все пытаюсь реализовать возможность остановки кнопки при нажатии на нее...

                            Может дадите подсказку, как лучше всего реализовывать? ( В Уроке 86)

                              Evgenii Legotckoi
                              • 22 ноября 2018 г. 12:40

                              Делайте проверку на текущее состояние кнопки

                              void Widget::onClickButton()
                              {
                                  switch (animationGroup->state())
                                  {
                                      case QAbstractAnimation::State::Stopped:
                                          animationGroup->start();
                                          break;
                                      case QAbstractAnimation::State::Running:
                                          animationGroup->pause();
                                          break;
                                      case QAbstractAnimation::State::Paused:
                                          animationGroup->resume();
                                          break;
                                  }
                              }

                                Комментарии

                                Только авторизованные пользователи могут публиковать комментарии.
                                Пожалуйста, авторизуйтесь или зарегистрируйтесь
                                B

                                C++ - Тест 002. Константы

                                • Результат:16баллов,
                                • Очки рейтинга-10
                                B

                                C++ - Тест 001. Первая программа и типы данных

                                • Результат:46баллов,
                                • Очки рейтинга-6
                                FL

                                C++ - Тест 006. Перечисления

                                • Результат:80баллов,
                                • Очки рейтинга4
                                Последние комментарии
                                k
                                kmssr9 февраля 2024 г. 5:43
                                Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                АК
                                Анатолий Кононенко5 февраля 2024 г. 12:50
                                Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                EVA
                                EVA25 декабря 2023 г. 21:30
                                Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                                J
                                JonnyJo25 декабря 2023 г. 19:38
                                Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                                G
                                Gvozdik19 декабря 2023 г. 8:01
                                Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
                                Сейчас обсуждают на форуме
                                P
                                Pisych27 февраля 2023 г. 15:04
                                Как получить в массив значения из связанной модели? Спасибо, разобрался:))
                                AC
                                Alexandru Codreanu19 января 2024 г. 22:57
                                QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…
                                BlinCT
                                BlinCT27 декабря 2023 г. 19:57
                                Растягивать Image на парент по высоте Ну и само собою дял включения scrollbar надо чтобы был Flickable. Так что выходит как то так Flickable{ id: root anchors.fill: parent clip: true property url linkFile p…
                                Дмитрий
                                Дмитрий10 января 2024 г. 15:18
                                Qt Creator загружает всю оперативную память Проблема решена. Удалось разобраться с помощью утилиты strace. Запустил ее: strace ./qtcreator Начал выводиться весь лог работы креатора. В один момент он начал считывать фай…
                                Evgenii Legotckoi
                                Evgenii Legotckoi12 декабря 2023 г. 17:48
                                Побуквенное сравнение двух строк Добрый день. Там случайно не высылается этот сигнал textChanged ещё и при форматировани текста? Если решиать в лоб, то можно просто отключать сигнал/слотовое соединение внутри слота и …

                                Следите за нами в социальных сетях