В pro файл добавляем
QMAKE_CLEAN += filename
Это нужно чтобы make по команде make clean знал какие файлы удалить. Например, бинарник.
понедельник, 21 мая 2012 г.
пятница, 23 марта 2012 г.
Precompiled Headers в Qt
"Предварительно скомпилированные заголовки - средство повышения производительности, поддерживаемое некоторыми компиляторами при компиляции стабильного тела кода и сохранении состояния скомпилированного кода в бинарном файле. Во время последующих компиляций компилятор будет загружать сохраненное состояние и продолжать компиляцию указанного файла. Каждая последующая компиляция проходит быстрее, поскольку не нужно перекомпилировать стабильный код."Предварительно скомпилированный заголовок должен содержать код, который является стабильным и статичным во всем вашем проекте.
(c) Qt Doc
В Qt к таким частям относятся инклуды Qt-классов.
Кроме повышения производительности, подключение Precompiled Headers позволяет не писать инклуды Qt классов в коде.
Что для этого нужно.
1) Все инклуды Qt клаcов выносятся в отдельный файл.
2) Редактируется файл проекта.
3) В коде больше не нужно включать Qt классы.
среда, 14 марта 2012 г.
Qt Widget просмотра PDF файлов
Я уже писал о том как читать и писать файлы в pdf с помощью библиотеки podofo. Осталось научиться их отображать. Начал анализировать вопрос и попался топик на сайте prog.org.ru.
Приведу это решение здесь.
Приведу это решение здесь.
вторник, 13 марта 2012 г.
Воспроизведение звука в Qt
Qt предоставляет три пути для воспроизведения звука.
Вторым методом является класс QAudioOutput.
- Класс QSound
- Класс QAudioOutput
- Модуль QtPhonon
Note that QSound does not support resources. This might be fixed in a future Qt version.Поэтому, если захочется хранить ваши звуки в ресурсах, ничего не получится. Выход, конечно, есть - написать костыли. А именно - скидывать файл из ресурсов во временную папку и воспроизводить уже оттуда.
Вторым методом является класс QAudioOutput.
понедельник, 12 марта 2012 г.
Эффективный способ самоудаления
Как exe-шнику удалить самого себя? Есть много способов. Самый эффективный и надежный как оказалось - это связка cmd файла и WScript-скрипта. Начиная с Windows XP можно выполнять WScript-скрипты. Этим и воспользуемся.
Кстати, для чего это может понадобиться? Например, если вы пишете свой Uninstall, то вам потом нужно будет почистить и за собой.
Приступим.
Кстати, для чего это может понадобиться? Например, если вы пишете свой Uninstall, то вам потом нужно будет почистить и за собой.
Приступим.
пятница, 30 сентября 2011 г.
Вставка QWidget в QTableWidget
Надо бы рассказать о способе вставки QWidget в QTableWidget.
Вообще, я не очень люблю QTableWidget, т.к. больше привык к QTableView и QAbstractItemModel, QStyledItemDelegate. Но в случае если быстро нужна таблица, связанная с одной готовой моделью, то можно воспользоваться QTableWidget. В принципе, QTableWidget порожден от QTableView и умеет всё то, что умеет и QTableView.
Перейдем к делу. Точнее к постановке задачи.
Надо вставить в ячейки QTableWidget виджеты. Пример на картинке.
То есть, виджеты всегда на виду, а не скрываются, как это делается в случае с делегатом.
В первом столбце банальный QLineEdit, во втором - пользовательский виджет для ввода даты.
Как это сделать?
В коде я приведу работу с QTreeWidget, а не с QTableWidget, но разницы особой нет.
Вообще, я не очень люблю QTableWidget, т.к. больше привык к QTableView и QAbstractItemModel, QStyledItemDelegate. Но в случае если быстро нужна таблица, связанная с одной готовой моделью, то можно воспользоваться QTableWidget. В принципе, QTableWidget порожден от QTableView и умеет всё то, что умеет и QTableView.
Перейдем к делу. Точнее к постановке задачи.
Надо вставить в ячейки QTableWidget виджеты. Пример на картинке.
То есть, виджеты всегда на виду, а не скрываются, как это делается в случае с делегатом.
В первом столбце банальный QLineEdit, во втором - пользовательский виджет для ввода даты.
Как это сделать?
В коде я приведу работу с QTreeWidget, а не с QTableWidget, но разницы особой нет.
пятница, 17 июня 2011 г.
Добавление своего типа в QVariant
Хороший тип QVariant. Это может быть int, double, QDate, QMap, и еще полсотни типов.
Добавим к этим типам собственный класс или структуру, чтобы с ней можно было бы общаться как с другими типами - помещать и извлекать из QVariant.
class SomeClass
{
//всё что нужно
};
Q_DECLARE_METATYPE(SomeClass)
Итак, достаточно после определения класса вызвать макрос Q_DECLARE_METATYPE()
Что это дает?
Добавим к этим типам собственный класс или структуру, чтобы с ней можно было бы общаться как с другими типами - помещать и извлекать из QVariant.
class SomeClass
{
//всё что нужно
};
Q_DECLARE_METATYPE(SomeClass)
Итак, достаточно после определения класса вызвать макрос Q_DECLARE_METATYPE()
Что это дает?
среда, 15 июня 2011 г.
Обновилась PoDoFo
Обновилась библиотека podofo для работы с PDF до версии 0.9.1.
Последнюю версию я использовал 0.8.2.
Проблем со сборкой не было, но чтобы узнать список изменений пришлось сливать исходники из SVN и читать SVN ChangeLog, ибо в архиве никаких Changes'ов не было.
Итак, what news.
В основном добавились патчи, исправляющие баги, либо ускоряющие работу библиотеки с большими pdf-файлами.
Изменен принцип сбоки библиотек, вместо двух сделали одну. Но это так, всё по мелочи.
Главное, что библиотека хорошо работает как и прежде.
Последнюю версию я использовал 0.8.2.
Проблем со сборкой не было, но чтобы узнать список изменений пришлось сливать исходники из SVN и читать SVN ChangeLog, ибо в архиве никаких Changes'ов не было.
Итак, what news.
В основном добавились патчи, исправляющие баги, либо ускоряющие работу библиотеки с большими pdf-файлами.
Изменен принцип сбоки библиотек, вместо двух сделали одну. Но это так, всё по мелочи.
Главное, что библиотека хорошо работает как и прежде.
вторник, 14 июня 2011 г.
QProgressIndicator
На qtapps.org есть много интересных виджетов, написанных обычными пользователями. Распространяется свободно под LGPL.
Например, QProgressIndicator - интересная крутилка прогресса в стиле FireFox.
Пример использования:
progress_ = new QProgressIndicator(this);
progress_->setAnimationDelay(50);
progress_->startAnimation();
* This source code was highlighted with Source Code Highlighter.
В итоге колесико будет крутиться пока ему не скажут stopAnimation()
Например, QProgressIndicator - интересная крутилка прогресса в стиле FireFox.
Пример использования:
progress_ = new QProgressIndicator(this);
progress_->setAnimationDelay(50);
progress_->startAnimation();
* This source code was highlighted with Source Code Highlighter.
В итоге колесико будет крутиться пока ему не скажут stopAnimation()
вторник, 19 октября 2010 г.
Интеграция Silverlight в Qt приложения
Хотелось бы опубликовать статью на русском языке об интеграции роликов Silverlight в Qt приложения.
Для этого используется библиотека Qtitan, она коммерческая, увы, но может быть кого-то заинтересует. К тому же ее вполне можно использовать в демо-режиме в некоммерческих целях.
Статья публикуется с негласного соглашения авторов фреймворка Qtitan Multimedia.
Интеграция Silverlight в Qt приложения
Разработчики, которым довелось разрабатывать приложения на фреймворке Qt, любят его за удобство и простоту использования, и за мощность которая скрывается под капотом технологии.
Мы тоже любим Qt, и мы захотели расширить наш любимый фреймворк возможностью работы с современной векторной графикой, например, мы захотели интегрировать в приложение ролики Adobe Flash или Microsoft Silverlight.
Для этого используется библиотека Qtitan, она коммерческая, увы, но может быть кого-то заинтересует. К тому же ее вполне можно использовать в демо-режиме в некоммерческих целях.
Статья публикуется с негласного соглашения авторов фреймворка Qtitan Multimedia.
Интеграция Silverlight в Qt приложения
Разработчики, которым довелось разрабатывать приложения на фреймворке Qt, любят его за удобство и простоту использования, и за мощность которая скрывается под капотом технологии.
Мы тоже любим Qt, и мы захотели расширить наш любимый фреймворк возможностью работы с современной векторной графикой, например, мы захотели интегрировать в приложение ролики Adobe Flash или Microsoft Silverlight.
Подписаться на:
Сообщения (Atom)

