2016-04-18 2 views
1

Я сделал контроллер для автомобиля, и в настоящее время я пытаюсь сделать GUI для контроллера в Qt. Единственное, чего мне не хватает сейчас, это визуализация положения и угла автомобиля относительно его начальной точки.2D-график положения и угла в Qt

Я хочу сделать что-то вроде этого:

enter image description here

где круг представляет собой машину, и линия в нем представляет ее заголовок/угол.

Добавленная бонусная функция будет заключаться в том, что у нее будет след замирания, когда она движется, но если я учу основы, я должен уметь самостоятельно разбираться.

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

Как вы могли бы поправить что-то подобное?

+0

Вы спрашиваете, как повернуть изображение в Qt? Или вы спрашиваете, как рассчитать угловой момент? Если вы хотите рассчитать угловой момент, вам понадобится * много * от обратной связи от ваших автомобильных датчиков. Например, датчик компаса - ваш лучший выбор, но он должен оставаться на уровне, и он не работает хорошо во всех ситуациях. Рядом с полюсом или при поездках, которые превышают разрешение долготы вашего датчика. –

+0

Нет, у меня есть все измерения. Меня интересуют только данные позиции и заголовка и создание сюжета, похожего на изображение на картинке. – trudesagen

ответ

1

You say:

У меня есть все измерения

Итак, давайте предположим, что у вас есть Euler angles такие, которые можно отфильтровать изменения в рулоне и рассматривать только изменения в ф.

Для этого вы должны расширить, добавив элемент φ, назовем его: m_phi. Также нам нужно будет добавить QPixMap в качестве участника, назовем его m_px. И вы будете переопределять QWidget::paintEvent.

paintEvent(qPaintEvent* /*event*/) {   
    if(!m_px.isNull()) { 
     QPainter* p; 

     p.setRenderHint(QPainter::Antialiasing); 
     p.translate(width()/2.0, height()/2.0); 
     p.save(); 
     p.rotate(m_phi); 

     QRect r = m_px.rect(); 

     r.moveCenter(QPoint()); 
     p.drawPixmap(r, m_px); 
     p.restore(); 
    }   
} 
+0

Является ли QPixMap образ, который я должен использовать в качестве фона? Если да, можно ли просто сделать белый фон без фактического изображения белого фона? Извините, если вопросы звучат глупо, но я довольно новичок в Qt. – trudesagen

+0

Я пробовал редактировать свой комментарий, но я был старше 5 минут. Не могли бы вы добавить это в новый проект виджета для запуска? Я довольно новичок в Qt, как я уже сказал, и я не совсем уверен, как добавить это в свой текущий проект. Я понимаю, если это слишком много, чтобы спросить. – trudesagen

+0

@trudesagen Мы как бы выходим за рамки вопроса здесь. Вы можете увидеть пример кода, который я экстраполировал свой код здесь: http://www.qtcentre.org/threads/53765-rotate-an-image?s=bdcf06102a97f1642ed73a3aa8321944&p=241416#post241416 Виджеты Qt предназначены для расширения, поэтому чем дальше вы попадаете в Qt, тем более знакомым вы окажетесь с этим видом поведения. в связанном примере 'Widget' является расширением' QWidget'. Если у вас появятся дополнительные вопросы о расширении, я бы посоветовал вам открыть новый вопрос об этом, и я постараюсь ответить там. –

Смежные вопросы