Sleep в Qt

Как-то очень сильно отвлекся от Qt. А тут на днях пришлось вернуться =) Долго вспоминал, как раньше реализовал задержку, или sleep в Qt (да, да, да, это плохо, и т.д., но иногда уж очень надо, особенно если нужно сдать лабу, чтобы отстали.)

Пример тривиальной реализации:

Использование QwtPlotSpectrogram

Раньше мы научились использовать компонент QwtPlotSpectrocurve (здесь). У qwt предусмотрен альтернативный компонент, более удобный для визуализации аналитических функций. В этой заметке мы научимся использовать QwtPlotSpectrogram.

Конфигурация Qt проекта

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

Использование QwtPlotSpectroCurve

Используя QwtPlotSpectroCurve (сначала ознакомтесь с QwtPlotCurve здесь) вы можете отображать информацию, требующую представление в трех измерениях; строить псевдо 3D - графики на двумерной плоскости. 3 измерение будет передано градацией цвета - такие графики называют спектрограммами. В отличии от компонента QwtPlotSpectrogram, вы управляете каждой точки кривой, а не интервалами. Компонент QwtPlotSpectroCurve менее функционален, но более логичен для потроение графиков.

Вращение сцены в OpenGL при помощи мыши (Qt)

Для изучения материала заметки вращения сцены в OpenGL при помощи мыши сначала необходимо изучить материал этой заметки.

Идея очень проста - перехватить ивент мыши, определить скорость перемещения указатель мыши и, основываясь на этом, рассчитать угол поворота сцены. Фактически, то же, что и в предыдущем примере, но вращение осуществляется не по таймеру, а по ивенту мыши (движение мыши с нажатой кнопкой).

Использование таймера в Qt

Для использования таймера в Qt предназначен класс QTimer. Сначала надо задать время, по истечении которого он будет срабатывать. Так же нужно определить слот, который обработает сигнал, излученный в следствие переполнения таймера. Таким образом, обязательным условием использования QTimer есть возможность использования сигналов и слотов, значит, класс, в котором используется таймер должен быть наследником QObject. Для примера создадим простенькие часы.

Вращение сцены в OpenGL (QT)

Итак, мы уже умеем инициализировать OpenGL-окно в QT. (/podklyuchenie-opengl-v-qt/) Теперь научимся вращать сцену. Сокращенно говоря, для поворота сцены в OpenGL  необходимо вызвать функцию void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z). Параметр angle задает угол поворота от текущего положения; x, y, z описывают вектор поворота, проще говоря - задают направление поворота. Можно так же изменить положение начала вектора.

Подключение OpenGL в QT

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

Включение сетки qwtplotgrid в qwt (qwtplot)

Для более удобного восприятия информации, для чтения графиков, можно включить сетку. Делается это с помощью класса QwtPlotGrid. Все как обычно: объект нужно создать, настроить и прикрепить до qwtplot.

Построение гистограмм (QT)

Построение гистограмм в QT осуществляется с помощью Qwt. Логика построения мало отличается от построения графиков.(Для начала советую почитать). Рассмотрим простой пример построения гистрограммы с помощью QwtPlotHistogram.

Построение графиков (QT)

К сожалению, в QT нет удобного компонента TChart (от Borland, для Delphi/Builder). Но есть неплохая альтернатива - Qwt. Из добавлением графиков и гистограмм никаких проблем не должно возникать, а вот с bubbles иногда (в зависимости от задачи) могут возникнуть трудности. Но об этом не сейчас. Начнем с обычных графиков.

О рандоме (случайных числах)

Очень часто при моделировании физических процессов нужно реализовать генератор случайных чисел (или просто «рандом»). Начнём с основ. На самом деле, идеального, «правильного» рандома не существует. Частично, эту задачу может исполнить девушка, ибо женская логика — тоже рандом генератор (причём довольно неплохой). Но нас интересует такая реализация в QT.