четверг, 20 января 2011 г.
Лекции и лабы по Qt
Вот здесь есть лекции и лабы по Qt от Нокии на английском. Можно скачать по отдельности или все целиком. Перевод на русский- в процессе.
пятница, 7 января 2011 г.
Плагин для макросов
Не знаю, часто ли у других возникает необходимость полностью чистить проект для того, чтобы его нормально собрать, но у меня перидически возникает. Например, ребилд перестает работать после ошибки линкера, когда метод объявлен, но не реализован. Лечится это просто- Clean, затем Build, но хотелось бы, чтобы все это висело на одной кнопке.
Мир- он все же не без добрых людей. Вот здесь в репозитории плагинов лежит исходный код плагина macros. После минимальных исправлений, плагин собрался для Qt Creator 2.1 RC1, и я его сразу же попробовал.
Ну, что сказать. Плагин пока не доделан. Записывается только один макрос, и то в память, не в файл. Работает только для редактора, т.е. если страница Edit неактивна, то записать или проиграть макрос нельзя. И еще одно- горячие клавиши у плагина- Alt-( и Alt-). Alt-) совпадает с Alt-0, что не есть здорово. Может, они на самом деле Alt-Shift-9 и Alt-Shift-0, не знаю.
Из хороших новостей пока только одна- плагин, вроде бы, регулярно обновляется. Будем ждать когда допилят...
понедельник, 3 января 2011 г.
Пишем плагин для Qt Creator - часть 3
Я в отпуске, так что появилось время написать следующую серию про создание плагинов для Qt Creator. Предыдущий пост на ту же тему Сборка и отладка плагинов для Qt Creator 2.1 практически заменяет вот эти две старые части:
Итак,
Часть 3 - Настройки плагина
В этой части речь пойдет про создание страницы в диалоге Tools->Options. Для эксперимента возьмем уже существующую страницу установок C++. Можно добавить свою, но интереснее добавить таб вот сюда:
Мы будем использовать тот же плагин DoNothing, что и в предыдущих постах.
Да, чуть не забыл. Версия Qt Creator- 2.1 RC 1 (2.0.94). Версия Qt- 4.7.1.
Категория плагина
Перед тем, как начать конструировать страницу опций, определим категорию плагина. Это может быть как одна из уже существуюших категорий (Build Systems, C++, Version Control и т.д.), так и абсолютно новая категория. Категория- это ветка в окне Installed Plugins, которое вызывается из меню Help->About Plugins. На рисунке внизу DoNothing живет в своей собственной категории Useless:
Категория задается в спеке плагина donothing.pluginspec строкой:
<category>Useless</category>
В дальнейшем будем использовать уже существующую категорию "C++".
Зависимости
В спек и в файл проекта надо добавить две зависимости- Project Explorer и CppTools.
Настройки плагина
В Qt Creator для настроек есть диалог Options. Понятно, что нам надо создать виджеты для этого диалога, сделать их доступными для Qt Creator и научить наш плагин получать информации от виджетов.
Настроек добавим две- option1CheckBox и option2CheckBox. Они будут частью виджета DoNothingSettingsWidget:
Внутреннее устройство
Для работы понадобятся четыре класса:
- DoNothingSettings - собственно определяет настройки плагина (bool option1 и option2) и методы readSettings() и writeSettings() для загрузки при запуске Qt Creator и сохранения настроек при их изменении пользователем;
- DoNothingSettingsPageWidget - наследуется от QWidget и содержит наш виджет. Также определяет геттер и сеттер для настроек, т.е. транслирует ГУЙ в bool и обратно. Также он реализует метод searchKeywords() для поддержки класса страницы DoNothingSettingsPage, о котором ниже;
- DoNothingSettingsPage - наследуется от Core::IOptionsPage, содержит указатель на DoNothingSettingsPageWidget и отвечает за работу страницы настроек в целом. Он определяет унаследованные методы для регистрации и работы страницы настроек(createPage(), apply(), matches(), id(), displayName() и пр.). Именно этот класс позволяет добавить наш виджет в любую страницу настроек;
- DoNothingPlugin - собственно класс плагина. Нследуется от IPlugin, содержит экземпляр класса DoNothingSettings и указатель на страницу настроек. Этот класс определяет работу всего плагина. Для нас сейчас выжны методы initialize(), и геттер и сеттер для настроек.
Надо отметить, что различные плагины в Qt Creator по-разному хранят настройки. В одних реализациях экземпляр класса XxxSettings принадлежит XxxSeetingsPageWidget или XxxSettingsPage, в других- самому плагину, как в моем примере.
Как же удается добавить наш новый таб в существующую страницу настроек? Класс DoNothingSettingsPage определяет методы category() и displayCategory(). Также он определяет и иконку, которая будет отображаться на нашей странице- categoryIcon(). Практически, все, что надо сделать, это:
QString DoNothingSettingsPage::category() const
{
return QLatin1String("I.C++");
}
QString DoNothingSettingsPage::displayCategory() const
{
return QCoreApplication::translate("DoNothing", QT_TRANSLATE_NOOP("DoNothing", "C++");
}
QIcon DoNothingSettingsPage::categoryIcon() const
{
return QIcon(QLatin1String(":/core/images/category_cpp.png"));
}
{
return QLatin1String("I.C++");
}
QString DoNothingSettingsPage::displayCategory() const
{
return QCoreApplication::translate("DoNothing", QT_TRANSLATE_NOOP("DoNothing", "C++");
}
QIcon DoNothingSettingsPage::categoryIcon() const
{
return QIcon(QLatin1String(":/core/images/category_cpp.png"));
}
В методе DoNothingPlugin::initialize() надо создать страницу настроек с помощью:
// create the settings page and add a tab to the chosen category
doNothingSettingsPage = new DoNothingSettingsPage();
addAutoReleasedObject(doNothingSettingsPage);
doNothingSettingsPage = new DoNothingSettingsPage();
addAutoReleasedObject(doNothingSettingsPage);
Файлы плагина
В принципе, вот такие файлы надо будет создать:
- donothingsettingswidget.ui - содержит ГУЙ нашешего виджета;
- donthingconstants.h - содержит константы для класса DoNothingSettingsPage и DoNothingSettings;
- donothingsettings.h (и donothingsettings.cpp) - содержит класс DoNothingSettings и операторы == и != над ним;
- donothingsettingspage.h (donothingsettingspage.cpp) - содержит классы DoNothingSettingsPageWidget и DoNothingSettingsPage.
Имена файлов- традиционные для плагинов Qt Creator.
Исходный код
Я не стал здесь приводить исходный код, все равно проще его смотреть в самом креаторе. Код можно скачать отсюда: QtCreatorPlugins-Part3.zip. Надо просто создать папку и разархивировать в нее.
Подписаться на:
Сообщения (Atom)