Qt -кроссплатформенный инструментарий разработки ПО на языке программирования С++ 1994 – основана компания Trolltech, разработаны версии под Unix и Windows 1997 – библиотека Qt 1.2 легла в основу среды KDE(сокращение от K Desktop Environment) 2001 – вышла Qt 3.0 для Unix, Linux, Mac и Windows 2008 – Trolltech → Nokia C++ - язык самой библиотеки Python Ruby Java PHP Unix, Linux Windows XP, Vista, 7 Windows Mobile Android iOS KDE- это разновидность графических интерфейсов ,разработанных для рабочего стола. Skype Google Earth - — проект компании google, в рамках которого в сети интернет были размещены спутниковые изображения всей земной поверхности. определённая модель разработки приложений, определённый каркас их структуры. существенно снижает частоту таких трудно отлавливаемых ошибок в приложениях, как утечки памяти, необработанные исключения или незакрытые файлы Уменьшает объём кода Кроссплатформенность - классы, обеспечивающие разработку оконного графического интерфейса пользователя - классы, реализующие работу с потоками, объектами синхронизации процессов/пото- ков; - классы для работы с 2-х и 3-х мерной графикой, классы реализующие поддержку некоторых графических форматов хранения; - реализация динамических массивов в виде шаблонов C++; Слот - метод, вызываемый автоматически, при испускании присоединенного к нему сигнала Сигнал-сообщение, испускаемое при наступлении какого-то события, например нажатия на кнопку. Может передаваться слоту или другому сигналу. Как связать сигнал со слотом ? При помощи функции QObject::connect() Функция QObject::connect() выглядит следующим образом: QObject::connect(отправитель, SIGNAL(сигнал(список параметров сигнала)), получатель, SLOT(список параметров сигнала)); это универсальные шаблонные классы, предназначенные для хранения элементов заданного типа в смежных областях памяти. Пример: QVector<int> vec; vec.push_back(10); // добавляем в конец вектора элемент vec.push_back(20); vec.push_back(30); qDebug() << vec; Будет выведено — QVector(10,20,30). Специфические операции для работы со списками: move() — Перемещает элемент с одной позиции на другую. removeFirst() — Выполняет удаление первого элемента списка. removeLast() — Выполняет удаление последнего элемента списка. swap() — Меняет местами два элемента списка на указанных позициях. takeAt() — Возвращает элемент на указанной позиции и удаляет его из списка. takeFirst() — Возвращает первый элемент и удаляет его из списка. takeLast() — Возвращает последний элемент и удаляет его из списка. toSet() — Возвращает контейнер QSet с данными содержащимися в списке. toStdList() — Возвращает стандартный список STL std::List с элементами из списка. toVector() — Возвращает вектор QVector с данными содержащимися в списке. Пример : обход списка QList<int> list; list << 10 << 20 << 30; QValueList<int>::iterator it = list.begin(); // создаем итератор и переводим его в начало списка while (it != list.end()) { qDebug() << "Element:" << *it; ++it; } В консоли будет отображено: Element:10 Element:20 Element:30 *первым удаляется элемент, который был вставлен позже всех остальных. pushing – «проталкивание» poping- «выталкивание» Пример использования стека: QStack<QString> stk; stk.push("Era"); // наполняем стек добавляя в него новые элементы stk.push("Corvus Corax"); stk.push("Gathering"); while (!stk.empty()) { qDebug() << "Element:" << stk.pop(); } В консоли будет: Element:«Gathering» Element:«Corvus Corax» Element:«Era» Очередь реализует структуру данных, работающую по принципу — первым пришел, первым ушел. Пример: QQueue<QString> que; que.enqueue("Era"); que.enqueue("Corvus Corax"); que.enqueue("Gathering"); while (!que.empty()) { qDebug() << "Element:" << que.dequeue(); } В консоли будет: Element:«Era» Element:«Corvus Corax» Element:«Gathering»