Sleep в Qt
Как-то очень сильно отвлекся от Qt. А тут на днях пришлось вернуться =) Долго вспоминал, как раньше реализовал задержку, или sleep в Qt (да, да, да, это плохо, и т.д., но иногда уж очень надо, особенно если нужно сдать лабу, чтобы отстали.)
Пример тривиальной реализации:
Использование QwtPlotSpectrogram
Раньше мы научились использовать компонент QwtPlotSpectrocurve (здесь). У qwt предусмотрен альтернативный компонент, более удобный для визуализации аналитических функций. В этой заметке мы научимся использовать QwtPlotSpectrogram.
Конфигурация Qt проекта
Приложение, написаное на Qt кросплатформенное. (За исключением хитрых библиотек сторонних разработчиков, но это в порядке исключения). Но для запуска приложения на разных платформах зачастую все таки придется правильно сконфигурировать Qt проект.
Использование Qt layout для оптимизации интерфейса программы
Средства Qt позволяют автоматически оптимизировать интерфейс программы для любого разрешения монитора или изменения размера окна. Сделать это можна с помощью Qt layout.
Использование 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, аналогично TChart Bubbles)
Так уж получилось, что в QwtPlot нету готового компонента для рисования bubbles - как, например, в TChart от Borland (Delphi). Но не беда. Все это можно сделать вручную, причем не очень сложным путем.
Построение гистограмм (QT)
Построение гистограмм в QT осуществляется с помощью Qwt. Логика построения мало отличается от построения графиков.(Для начала советую почитать). Рассмотрим простой пример построения гистрограммы с помощью QwtPlotHistogram.
Построение графиков (QT)
К сожалению, в QT нет удобного компонента TChart (от Borland, для Delphi/Builder). Но есть неплохая альтернатива - Qwt. Из добавлением графиков и гистограмм никаких проблем не должно возникать, а вот с bubbles иногда (в зависимости от задачи) могут возникнуть трудности. Но об этом не сейчас. Начнем с обычных графиков.
О рандоме (случайных числах)
Очень часто при моделировании физических процессов нужно реализовать генератор случайных чисел (или просто «рандом»). Начнём с основ. На самом деле, идеального, «правильного» рандома не существует. Частично, эту задачу может исполнить девушка, ибо женская логика — тоже рандом генератор (причём довольно неплохой). Но нас интересует такая реализация в QT.