Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
18 ноября 2018 г. 13:25

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

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

15

Добрый день!

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

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



0

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

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



0

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

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

0

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

0

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

0

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

0

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

0

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

0

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

0

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

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

0

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

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

0

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

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

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


0

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

0

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

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

0

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

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;
    }
}
0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
НБ
15 февраля 2019 г. 13:09
Николай Булахтин

C++ - Тест 003. Условия и циклы

  • Результат:50баллов,
  • Очки рейтинга-4
НБ
15 февраля 2019 г. 13:03
Николай Булахтин

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

  • Результат:25баллов,
  • Очки рейтинга-10
НБ
15 февраля 2019 г. 13:01
Николай Булахтин

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

  • Результат:73баллов,
  • Очки рейтинга1
Последние комментарии
V
14 февраля 2019 г. 18:41
Vlad15007

Спасибо огромное! Заработало!
А
12 февраля 2019 г. 9:26
Александр90

Сам разборался, спасибо.
А
12 февраля 2019 г. 8:19
Александр90

День добрый! Можешь выложить форму mainwindow.ui от урока? Заранее спасибо
11 февраля 2019 г. 10:51
Евгений Легоцкой

Нет, у меня проблема с жёстким диском случилась, занимался восстановлением ПК, ещё пару вечеров придётся этим заниматься, увы.
Сейчас обсуждают на форуме
15 февраля 2019 г. 21:22
IscanderChe

Доброй ночи.Скромно напоминаю о своём вопросе...
15 февраля 2019 г. 15:36
Евгений Легоцкой

Ну я тут нашёл одно решение, но сам его не проверял. Вам нужно помещать фамилии скорее всего в ячейки заголовка, и потом просто перерисовывать их QHeaderView * header = m_ui->tableWidget...
15 февраля 2019 г. 7:53
Евгений Легоцкой

Добрый день! Не работал с remoteobjects, поэтому глянул документацию, чтобы рассмотреть, что это за зверь. После просмотра документации сложилось стойкой впечатление, что это вполне возм...
m
14 февраля 2019 г. 18:28
mr_roman

Нашел решение на Java. Удалось интегрировать в проект сервиса на Qt, теперь из Qt запускаю Java-код акселерометра.
14 февраля 2019 г. 11:00
Евгений Легоцкой

ok. I see. You changed related name Try this {% if goal.joined.all|user_in:request.user %}
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы