вторник, 15 июня 2010 г.

Visual Studio 2010 + Qt

Здравствуйте! После выхода Visual Studio 2010 всем конечно же захотелось проверить это чудо для разработки ПО :) Есть было небольшое "но". Коснулось это "но" не всех конечно же, надеюсь не у многих такая проблема. Эта проблема именно с интеграцией Qt библиотеки в студию. Хотя какая тут проблема, тут целый трабл,т.к самой интеграциии нет. Как раз особо упорным эта тема будет полезна) Воспользоваться всеми возможностями Qt мы не сможем конечно же, но базовыми функциями вполне,так что не надейтесь собрать исходники QWebKit или QtCreator :)

Итак для начала нам понадобится : руки(желательно не из попы),голова (желательно с мозгами),ваш любимый напиток ,возможно музыка и запас нервов :)

У меня установлена qt 4.6.3 ( скачать можно её тут http://qt.nokia.com/downloads/windows-cpp-vs2008 ). Путь : c:\Qt\4.6.3, в дальнейшем QTDIR .
(Объяснения для русской версиии Visual Studio 2010 )

1. Созадать простейший проект
2. Проект -> Свойство проекта -> Каталоги VC++ :
2.1. в пункте "Каталоги исполняемых файлов" добавляем путь : QTDIR\bin;
2.2. в пункте "Каталоги включеня" добавить путь : QTDIR\include;
2.3. в пункте "Каталоги библиотек" добавить путь : QTDIR\lib;
2.4. в пункте "Каталоги исходного кода" добавить путь : QTDIR\include;
3. Проект -> Свойства проекта -> Компоновщик -> Ввод:
3.1 В пункте "Дополнительные зависимости" добавляем библиотеки которые нам нужны самые важные : QtCore4.lib,QtCored4.lib,qtmain.lib.Если QTDIR не прописан в переменных средах или в PATH не указан путь до папки с проектом то указать надо полный путь до библиотеки , т.е c:\Qt\4.6.3\lib\QtCore4.lib.
Собственно и всё:)Работа над компиляции GUI программ ведётся , ждите новых статей :)

Обработка xml файлов с помощью библиотеки Qt

Статья QtXml)

Обработка xml файлов с помощью библиотеки Qt.

Я расскажу самый быстрый способ, когда не нужно создавать свои классы и структуры для хранения информации из xml.Мы будем пользоваться qt функциями.
Обработка будет производиться методам DOM.

void readXml (QDomNode *node);
void main(int argc, char*argv[])
{
if(argc>2)
{
QFile xml(argv[1]); // Наш файлик загружен
QDomDocument domDoc;
if(domDoc.setContent(&xml)) // Вот и само считывание впринципи
{
QDomElement domElement= domDoc.documentElement(); // Получаем главный корень дерева xml
readXml(&domElement); // Парсинг
}
}
}
void readXml (QDomNode *node)
{
QDomNode child=node->firstChild();
while(!child.isNull()) // Если есть узел
{
QDomElement element=node->toElement(); // Преобразуем данные узла
if(!element.isNull()) //
{
puts(qPrintable("tagName : " + element.tagName())); // распечатка тегов
puts(qPrintable("attribute name: " + element.attribute("name")); // распечатка атрибутов
}
readXml(&child); // Продолжаем парсить дерево
child=child.nextSibling(); // Переходим к следующему узлу
}
}
// На выходе будет распечатка всех тегов и их атрибутов :)