Russian Qt Forum

Qt => Уроки и статьи => Тема начата: serg_hd от Июнь 24, 2010, 23:58



Название: HowTo: Использование NetBeans для С++ и Qt
Отправлено: serg_hd от Июнь 24, 2010, 23:58
Решил вот выложить свои заметки относительно использования Qt при программировании на С++ в IDE Netbeans. Сразу оговариваю, что не с целью сравнения с какой-либо другой платформой, а только чтоб помочь интересующимся в настройке, обзоре главных возможностей - это сэкономит им время.

Перед началом работы надо установить опции компиляторов и сборщиков, пункт Tools -> Options -> C/C++ -> Build Tools.

У меня результат установок отображён на скрине ниже:

(http://s08.radikal.ru/i181/1306/89/0d92bcd5af46.jpg)

По нему, собственно, также видно, что должно быть заранее установлено. Например у меня mingw (порт gcc под win) и msys (дополнение к mingw).

После этого можно приступать к созданию проекта. Жмём в меню на "New Project" и выбираем что именно нам нужно, например С/С++ -> C/C++ Qt Application:

(http://s019.radikal.ru/i604/1306/cf/84f801c4b104.jpg)

Далее видим начальный стандартный шаблон кода для Qt Application (который, кстати, можно тоже изменить, но это уже относится к общим возможностям самой IDE):

(http://s50.radikal.ru/i127/1306/c4/f8c7cb50b281.jpg)

Обратим внимание на отображённое слева дерево проектов. Проектов одновременно там может быть несколько - удобно, например, если вдруг надо сравнить некоторый функционал двух проектов. Для выбора конкретного (для сборки и запуска к примеру) нужно выбрать в контекстном меню (имеется ввиду правая кнопка мыши на базовом узле) проекта пункт "Set as Main Project".

Также, через это же меню мы можем добавить к проекту разные файлы для известных целей, такие как "С++ Class", "C++ Header File", файл ресурсов qrc и многие другие, в том числе и физический каталог. Последнее, для меня, например, немаловажно, т.к. очень не люблю когда все файлы в одной куче (наверно от java осталось). Пункт "New Logical Folder" позволит нам создать логический каталог, что тоже неплохо.

(http://s60.radikal.ru/i170/1306/1b/f74d537be1c4.jpg)

Заглянем что можно сделать в настройках проекта. Контекстное меню проекта -> Properties:

(http://s52.radikal.ru/i137/1306/a2/b81300be2139.jpg)

В пункте Build -> Qt можем установить имя, версию проекта, добавить/удалить нужные модули Qt и при этом в выпадающем списке "Build Mode" указать для какой сборки эти все настройки будут предназначены. Кстати, тип сборки можно при желании добавить и свой, или удалить имеющиеся, нажав вверху "Manage Configurations". Пункт С++ Compiler нужен для того, чтобы добавить путь к внешним ресурсам (хедерам библиотек к примеру), которые могут быть использованы в проекте. На скрине таким образом к проекту добавлен qwt:

(http://s52.radikal.ru/i138/1306/85/f4189586225e.jpg)

Пункт Linker позволит добавить таким же способом .a-файл соответвующей библиотеки. Основная полезность пункта Run в том, что можно указать тип вывода - окно или консоль. Все эти настройки хранятся для release-сборки в файле проекта:

nbproject/qt-Release.pro (всем, конечно, знаком .pro-файл)

и для debug соответственно:

nbproject/qt-Debug.pro

Поэтому всё это дело можно прописать в этих файлах и вручную. Кстати, при создании, например, динамической библиотеки (New Project -> C/C++ Qt Dynamic Library) все необходимые данные будут записаны в pro-файлы сборок также автоматически.

Интересен момент создания класса С++ (конт. меню главного узла проекта -> New -> C++ Class...), т.к. можно одновременно задать нужные каталоги и др. настройки для .h и .cpp файлов в одном диалоге:

(http://s017.radikal.ru/i422/1306/10/caf07ed2423d.jpg)

Центральная область для написания кода позволяет содержать в себе закладки и разделители, что делает одновременную работу с файлами наиболее удобной. Чтобы создать закладку, нужно просто двойным щелчком выбрать в дереве проекта нужный файл, а чтобы создать разделитель - перенести закладку, удерживая её левой кнопкой мыши в нужную область:

(http://i037.radikal.ru/1306/01/0895e6c37333.jpg)

Ниже перечислю комбинации клавиш и другие возможности которые часто использую в работе:

- при установке каретки на названии функции или переменной она выделится во всём коде в пределах тела текущей функции/класса;

- чтобы посмотреть аргументы и возвращаемый тип функции (если забыли обратить на них внимание в процессе набора) нужно нажать комбинацию "Ctrl+space" после закрывающей скобки, его можно также использовать для просмотра всех методов классов и т.п. А вообще, "Ctrl+space" стандарт не только для Netbeans;

- чтобы скопировать строку на строку ниже (весь остальной код сдвинется): Ctrl+Shift+Down, чтобы вверх, соответственно: Ctrl+Shift+Up;

- чтобы передвинуть блок выделенного кода на расстояние одного Tab (его размер тоже можно задать в настройках IDE) влево: Shift+Alt+Left, вправо Shift+Alt+Right;

- коммен./раскоммент. выделенного кода: Ctrl+"/";

Также для Solaris, OpenSolaris и Linux доступен профайлер (http://netbeans.org/kb/docs/cnd/profiling-tools_ru.html).

Пока всё, при обнаружении или вспоминании чего-либо интересного буду дописывать.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: navrocky от Июнь 25, 2010, 10:22
Да, netbeans это гуд! Хочу от себя добавить, что я тоже на нём остановился, до этого работал в разных средах (KDevelop, QtCreator, также смотрел Eclipse, CodeBlocks, QDevelop, VisualStudio). В нетбинсе нравится рефакторинг, дополнение кода и общее ощущение отлаженности среды.

Но Qt проект создаваемый из netbeans не переносим, то есть если его создал под вендой то его сложно будет открыть в NetBeans в линупсе. Поэтому я пользуюсь вариантом создания проекта по мэйкфайлу.

Плюс, qmake достаточно убог для создания крупных проектов, поэтому лучше сразу использовать cmake )


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: serg_hd от Июнь 25, 2010, 12:01
из минусов ещё можно было бы отметить что он на java (это плата за гибкий функционал), и у него проблемы с большими объёмами классов. Работать, например, с boost в нём, говорят, весьма проблематично. Может быть со временем исправят, изменят к новой версии архитектуру или ещё чего. А я пока жду профайлер под win.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: navrocky от Июнь 25, 2010, 15:23
Минус не java, а тормознутость (хотя это почти синонимы  ;D). На стареньких машинках в нем очень тяжело работать.

А с бустом у него все в порядке ) все отлично дополняет. И, в отличие от некоторых недо-сред, дополняет макросы. У меня проект уже содержит >700 файлов, полёт нормальный.

Цитировать
А я пока жду профайлер под win
Не дождешься, т. к. он работает только в Sun Studio при использовании Sun компилятора. В линупсе профайлера тоже нет.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: serg_hd от Июнь 25, 2010, 15:33
В линупсе профайлера тоже нет.
Как это нет, если в статье (http://netbeans.org/kb/docs/cnd/profiling-tools_ru.html) написано что есть?


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: navrocky от Июнь 25, 2010, 22:06
Почему я тогда его не вижу )


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: Blackwanderer от Июнь 26, 2010, 09:48
Решил внести свою лепту... Вот небольшая заметка об отладке Qt программ в NetBeans, а именно просмотре содержимого Qt классов а-ля QtCreator. Конечно получается не столь удобно и не столь красиво, но все-таки лучше чем ничего.
Отладка Qt программ в NetBeans (http://pvantonov.livejournal.com/3437.html)


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: navrocky от Июнь 26, 2010, 11:08
Спс, полезная статья


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: ieroglif от Июнь 26, 2010, 12:51
честно говоря, почитав, я пока так и не понял смысл  :(
а чем QtCreator не устраивает? пишу в нём и под линухом и под вендой - как-то проблем не возникало никогда..
или это просто собрались любители NetBeans и не посвящённым тут ловить нечего? :)
В общем, можно объяснить - чем эта среда лучше чем QtCreator? скачать, увы, не могу - канал слишком уж узкий.. :(


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: serg_hd от Июнь 26, 2010, 13:28
а чем QtCreator не устраивает?
два слова - очень многим. Это становится понятным только после использования netbeans, остальное холивар.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: ieroglif от Июнь 26, 2010, 15:06
а чем QtCreator не устраивает?
два слова - очень многим. Это становится понятным только после использования netbeans, остальное холивар.
понял, спасибо :), буду качать, смотреть.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: serg_hd от Июнь 26, 2010, 16:30
понял, спасибо :), буду качать, смотреть.
это не значит, что netbeans лучше creator'а, просто чтобы выбрать надо смотреть и оценивать самому. Но лично я, после того как взвесил все "за" и "против" остановился на netbeans.
Например в creator'e мне понравилась скорость и дебагер. Больше, в принципе, ничего.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: xokc от Июнь 27, 2010, 18:44
Например в creator'e мне понравилась скорость и дебагер.
Как-то у меня слова "QtCreator, дебагер и скорость" не сильно сочетаются. То есть в NetBeans с этим еще хуже? А с cdb оно дружит?


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: serg_hd от Июнь 28, 2010, 21:56
При дебаге многопоточной проги у меня были какие-то странные зависания, без потоков всё ок.
Databases поддерживает.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: navrocky от Июнь 29, 2010, 11:23
В линупсе профайлера тоже нет.
Как это нет, если в статье (http://netbeans.org/kb/docs/cnd/profiling-tools_ru.html) написано что есть?

Да, немножко не так выразился )

Есть при условии что используешь sun studio tools и их компилятор вместо gcc. Только я не совсем представляю как это будет работать %) надо ведь все c++ либы пересобрать включая qt.. короче геморрой.

Лучше, имхо, использовать какой-нибудь valgrind/kcachegrind...

Цитировать
Как-то у меня слова "QtCreator, дебагер и скорость" не сильно сочетаются. То есть в NetBeans с этим еще хуже? А с cdb оно дружит?

Интерфейс QtCreator работает ощутимо быстрее. Дебаггер не скажу что намного лучше (лучше только показывает кутэшные классы). С cdb, похоже, не дружит, только gdb или sun studio tools.

Цитировать
При дебаге многопоточной проги у меня были какие-то странные зависания, без потоков всё ок.

Виснет сам gdb, причем он виснет как в netbeans, так и в qtcreator и kdevelop (загрузка на одно ядро 100%). Я обновил gdb до последней версии 7.1 вроде виснуть стало меньше.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: serg_hd от Июль 02, 2010, 13:33
Поставил 6.9 и сразу обратил внимание на динамическую поддержку документации (чтобы дока отображалась в процессе набора кода - без лазания в assistant в случае с qt и т.п.), но тут же проблемка:

(http://s019.radikal.ru/i643/1306/66/63a38452ce85.jpg)

В инете ничего вразумительного не нагуглил, может кто знает ответ как настроить? Имею ввиду что именно он хочет увидеть в PATH. Man.exe или чего-то такого тоже не нашёл.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: niXman от Июль 02, 2010, 14:00
Цитировать
что именно он хочет увидеть в PATH
man.

но тут несколько нюансов:
1. man - система справки линукс. для венды такого не видал.
2. даже если такой есть, то в нем не будет доки по Qt.


Название: Re: Использование Netbeans для С++ и Qt
Отправлено: serg_hd от Июль 02, 2010, 14:05
http://forums.netbeans.org/post-74576.html
There is no support for Qt help system yet. Так что в будущем поддержка, вероятно, всё же будет. Например в версии 7.0 она была бы очень кстати.


Название: Re: Использование NetBeans для С++ и Qt
Отправлено: navrocky от Июль 05, 2010, 10:32
У меня в линупсе там маны показывает по стандартным фукнциям. Qt4 в манах нет, помню раньше Qt3 или Qt2 поставлялся с манами )


Название: Re: HowTo: Использование NetBeans для С++ и Qt
Отправлено: juvf от Октябрь 23, 2020, 10:21
Цитировать
У меня результат установок отображён на скрине ниже:
У меня окошко Tools -> Options -> C/C++  выглядит так (см вложение). Почему?



Цитировать
поэтому лучше сразу использовать cmake
Проект с cmake собирается очень долго, последовательно одним ядром компилит каждый *.cpp. Как собирать проект cmake на всех ядрах?