AVR Hobby Я
Категории раздела
Мои статьи [8]
Информер
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Понедельник, 29.04.2024, 20:59
    Приветствую Вас Гость | RSS
    Главная | Регистрация | Вход
    Каталог статей
    Главная » Статьи » Мои статьи

    Знакомство с Qt - таймер
        Иногда в жизни происходят трудно объяснимые вещи. Началось с того, что я решился начать работать с контроллером STM32. Начало понравилось, а когда решил попробовать связь с ПК по RS232 порыскав в Интернете набрел на сайт http://microtechnics.ru/qt-ustanovka-biblioteki-qtserialport/  и там открыл для себя Qt. До сих пор не могу сам себе ответить, как имея профильное образование, вроде отслеживая все новости в мире электроники можно было не замечать существующий рядом этот прекрасный мир.
         Qt является инструментом для создания кросс-платформенных приложений и использует в своей основе язык программирования С++.
         Хватит лирики, для начала необходимо зайти на сайт http://qt-project.org/downloads
    скачать  дистрибутив под вашу ОС и установить. Для себя я установил Qt Creator 2.8.1 for Windows , он содержит массу вкусностей включая интегрированный дизайнер и редактор. Если вашим выбором будет Qt 5.1.1 то дизайнер будет и в виде отдельного приложения. После установки желательно прописать пути в системные переменные среды (касается при установке под Windows) процесс великолепно описан в первой  ссылке текста.
         Перейду к моим первым экспериментам с таймером. Для начала создадим новый проект, напомню работаю с Qt Creator 2.4.1 основан на Qt 4.7.4 , выбираем (как вариант) [файл]->[новый файл или проект]. В открывшемся окне слева выбираем [проект Qt Widget] затем справа [GUI приложение Qt]. Далее даем название проекту, затем выпираем путь к нему, у меня путь C:\QtProject. В следующем окне можно оставить все по умолчанию, а затем в очередном окне желательно указать под себя имя класса, далее программа сообщит вам список создаваемых файлов проекта. Идем далее и попадаем в наш проект. Раскроем все папки проекта, наблюдаем пять созданных системой файлов: файл с именем проекта расширение .pro, заголовочный mainwindow.h, исходники main.cpp, mainwindow.cpp, а также файл формы mainwindow.ui.
    С учетом того, что Qt прямой приемник C++ выполним следующее:
    1. добавим в наш исходный файл mainwindow.cpp, класс таймера третьей строчкой кода: #include.
    2. Выполним еще одно обязательное условие создадим экземпляр таймера, опишим сигнал и слот необходимый для передачи управления при срабатывании таймера, зададим время задержки
    После строки ui->setupUi(this); дописываем:
    QTimer* timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()) );
    timer ->start(500);

    3. переходим к заголовочному файлу mainwindow.h и добавляем строку public slots:
    ниже допишим описание функции void onTimeout(); затем это важно! Устанавливаем курсор мыши сразу за знаком «;» нажимаем правую кнопку выбираем «Рефакторинг->добавить реализацию…» тем самым автоматически создадим заготовку функции void MainWindow::onTimeout() в нашем исходнике.

    4. делаем двойной клик на файле формы mainwindow.ui. и бросим на нашу форму виджет Label, растянем рамку виджета и немного наведем красоту как на мой вкус: при активном виджете в строке поиск зададим «font» откроем и выберем нужный шрифт и размер, в поиске зададим «palette», выберем изменить палитру и в поле «WindowText» установим нужный цвет текста.

    5. вернемся в наш исходник, в тело функции void MainWindow::onTimeout()
    добавим строку : ui->label->setText(QString::number(rand()%20));
    задав тем самым генерацию и вывод случайных чисел от 0 до 20.
    Вот в общем и все запускаем на выполнение и в случае успеха наблюдаем случайные числа с интервалом 500 миллисекунд.

    Тексты исходников:
    mainwindow.h
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    #include
    namespace Ui {
    class MainWindow;
    }
    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    private:
    Ui::MainWindow *ui;
    public slots:
    void onTimeout();
    };
    #endif // MAINWINDOW_H

    mainwindow.cpp
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include  <QTimer>
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    QTimer* timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()) );
    timer ->start(500);
    }
    MainWindow::~MainWindow()
    {
    delete ui;
    }
    void MainWindow::onTimeout()
    {
    ui->label->setText(QString::number(rand()%20));
    }

    Цветом выделены добавленные строки.


    В этот пример попало: создание приложения, использование таймера, генерация и вывод случайного числа, изменение типа, размера и цвета щрифта в виджете.


    Исходники проекта можно скачать
    здесь

    Литература: QT4: программирование GUI на C++
                         Жасмин Бланшет   Марк Саммерфилд
                         Qt4.5 Профессиональное програмирование 
                         на C++     Макс Шлее.
    книги содержат диски с исходниками примеров.
    Категория: Мои статьи | Добавил: avu2 (17.10.2013)
    Просмотров: 3649 | Рейтинг: 0.0/0
    Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz