Программирование на C++

10 способов прострелить себе ногу

Создание веб приложений

В инете столько порнухи, что создается впечатление, что каждая женщина на Земле хотя бы раз в ней снималась...

Подпись для третьего не придумал

Американец изнасиловал лошадь, потому что думал, что у них родится кентавр

Помощь обездоленным якутам на дальнем севере

Благотворительность (на правах рекламы)

Показаны сообщения с ярлыком Qt. Показать все сообщения
Показаны сообщения с ярлыком Qt. Показать все сообщения

пятница, 1 марта 2013 г.

Сигналы и слоты в Qt

Сигналы и слоты в Qt - это механизм, который используются для взаимодействия между несколькими объектами. Фактически, сигналы и слоты помогают нам реализовать шаблон "Наблюдатель" (скоро описание этого шаблона будет добавлено в блог, если в скором времени не появится, пинайте меня, в C# это интерфейс System.IObserver<T>, в бусте boost.signals). Эта особенность существенно различает Qt от других библиотек.

Основная идея слотов и сигналов:
Когда событие происходит, то вырабатывается сигнал, который посылается на слот, слот это обработчик сигналов, фактически, это обычный метод класса (их даже можно делать виртуальными), который определяется после идентификатора public slots.
Предположим, что у нас есть класс MyClass:
(Не забываем, что для использования этого механизма нужен специальный макрос Q_OBJECT, который должен быть определен в теле класса, к тому же только классы наследуемые от QObject могут содержать слоты и сигналы, поэтому сделаем наследование
/////////////////////////////////////////////////////
class MyClass : public QObject {
    Q_OBJECT
//Определение
}
////////////////////////////////
Начнем с сигналов:
Как было сказано это тоже обычные методы:
////////////////////////////////////////////////////
class MyClass: public QObject {
Q_OBJECT
public:
...
signals:
   void mySignal();
};
///////////////////////////////
Для выработки сигнала используем ключевое слово emit:
/////////////////////////////////////////////////////////////////////////////////
void MyClass ::sendMySignal()
{
   emit mySignal();
}
/////////////////////////////////////////////////
Хочу сказать, что сигналы автоматически определяются и их НЕ НАДО определять, просто оставляем объявление.
Теперь слоты:
Как видим слоты - это обычные методы, у них есть определение, в отличие от сигналов, все они размещаются после ключевого слова - slots,причем мы указываем для них уровень доступа. Также можно добавлять аргументы (этот пример без аргумента)
/////////////////////////////////////////////////////////////////////////////////////////////
class MyClass: public QObject {
Q_OBJECT
 
public slots:
   void mySlot()
   {
      ...
   }
};
///////////////////////////////////////////////////////
Соединение сигнала и слота:
Для соединения сигнала и слота мы используем метод connect(sender, SIGNAL(signal), receiver, SLOT(slot))
Для нашего примера (т.е. сигнал и слот выше имена):
connect(sender, SIGNAL(MySignal()), receiver, SLOT(MySlot()));
Благодаря этому, при возникновении сигнала MySignal() автоматически вызовется метод MySlot(), который обработает сигнал MySignal().

среда, 20 февраля 2013 г.

Установка библиотек Qt (кьют) для VS2010 и VS2012


Сегодня я расскажу как установить библиотеку 4.8.4. версии (и 5.0) под Visual Studio 2010 и VS2012. Хочу сказать, что вышла библиотека под версией 5 и ее установка аналогична для версии 4.8.4.
Итак, что на требуется, это:

  1. Visual Studio 2010 или 2012 msdn можно скачать на рутрекере или Dreamspark
  2. Qt 4.8.4 или 5.0 : 4.8.4 и 5.0
  3. Qt Add-In : qt Add-In для 4   qt Add-In для 5
Когда скачиваем Qt 4.8.4 (5.0) мы можем выбрать либо Windows (VS2010) или скачать .zip. .zip скачиваем только в том случае, если вы хотите сконфигурировать библиотеку под свои нужды.   Мы выберем легкий путь и установим через Qt Add-In. Если мы устанавливаем для VS2012, То также скачиваем Windows VS2010, но только другой qt Add-In для 5 ой версии!!
Если мы выбрали вариант Qt .zip то, при установке путь не меняем, пусть будет C:\Qt\  Так будет проще.
Далее устанавливаем Qt Add-In. Все, готово. Запускаем Visual-Studio 2010 и можно увидеть, что сверху появилась вкладка Qt.