Qt Creator. Интегрированная среда для Qt

На днях вышла предварительная версия IDE Qt Creator, предназначенная для разработки программ с помощью библиотеки Qt, в которой есть и отладчик, и дизайнер интерфейса, и удобный редактор кода с различными подсказками. Я не мог пройти мимо и не поковыряться в новой среде. Заодно таким образом неожиданно появился еще один повод поиграть с Qt, а то я давно хожу вокруг да около этой библиотеки, изредка пробую новые версии, но для реальной работы пока не использовал.

Установка

Первая проблема с Qt Creator появилась еще во время установки, когда инсталлятор сообщил об ошибке при копировании файла lib\Nokia\BinEditor.dll.

Ошибка при установке Qt Creator

Установить IDE удалось только после того, как инсталятору сказал не устанавливать Qt Development Libraries, а сам Qt скачал и поставил отдельно.

В версии под Windows прилагается компилятор MinGW, поэтому никакие дополнительные компиляторы не нужны.

Редактор кода Qt Creator

Первое, что бросается в глаза при запуске среды — симпатичный внешний вид в серых тонах. Вообще внешне Qt Creator выглядит как-то непривычно для IDE, которые обычно оформлены более строго или, я бы сказал, скорее аскетично. Здесь нет привычной панели инструментов, а отдельные инструменты представляют собой не перетаскиваемые окна, которые «прилипают» к краям или присоединяются к другим окнам, а являются частями главного окна, положение которых не меняется. Это скорее минус, но даже при таком положении дел интерфейс довольно удобный. Сама среда разработки довольно быстро запускается и шустро работает, что не может не радовать.

Внешний вид Qt Creator

Кнопки в левой части окна открывают такие элементы среды разработки как настройки компиляции, последние открытые файлы, переключение в режим отладчика и открытие справки.

Редактор кода показался очень удобным. Во-первых, в нем есть подсказки по членам и методам классов, которые появляются после ввода точки или «->».

Подсказки по членам класса

Кстати, подсказки по методам классов из STL Qt Creator не показывает, а STL-ные заголовочные файлы почему-то подчеркивает со словами «не могу найти», хотя компилятся такие файлы без проблем.

И есть, разумеется, подсказки по параметрам функции. Такие подсказки выскакивают после открытия скобки:

Или подсказки можно вызвать, если нажать Ctrl+пробел после открытия скобки:

С помощью специального инструмента на панели можно перемещаться по функциям, которые описаны в открытом файле:

Обзор функций в файле

К сожалению, в Qt Creator нельзя открывать несколько файлов в разных вкладках. Открытым все время является только один файл и для перемещения между ними приходится использовать дерево проекта или выпадающий список с открытыми файлами.

Кстати, есть неплохой поиск по файлам:

А поиск текста в открытом файле работает так же как и в браузерах, то есть с помощью панели внизу экрана, а не с помощью окон, которые закрывают весь код:

Проекты и компиляция

В качестве проекта для IDE используется проектный файл .pro который используется при компиляции программы, которая использует Qt.

Файл проекта

Некоторые ошибки вроде незакрытых скобок и непоставленных точек с запятой подчеркиваются еще до компиляции.

Красиво смотрится индикатор успешности компиляции в левой нижней части экрана.

В Qt Creator есть встроенный отладчик, но воспользоваться им мне так и не удалось — отладчик вроде бы запускается, то программу не выполняет и до точек останова не доходит.

Сообщения об ошибках оформлены вот в таким виде:

К сожалению, Qt Creator жестко завязана на саму Qt, а то пока качал была у меня надежда на счет того, что удастся отключить Qt и использовать Qt Creator в качестве IDE для MinGW. К сожалению, сделать это удастся. Виной всему Qt-ный формат проекта. Даже в настройках компиляции в списке задач невозможно отключить выполнение QMake. Параметры запуска QMake тоже не меняются.

Так как эта среда разработки заточена под Qt, то не удивительно, что в ней есть и дизайнер интерфейсов:

Как видите, при разрешении экрана 1280×1024 места по горизонтали катастрофически мало, хотя панель с контролами можно сделать раза в два поуже. Дизайнер работает хорошо, никаких явных глюков я не заметил. Странно только то, что обработчики событий приходится объявлять самому в редакторе кода. Разработчики Qt Creator могли бы возложить эту задачу на плечи дизайнера.

UPDATE: Как заметил Power user в комментариях, в дизайнере есть редактор слотов, с помощью которого можно удобно связать обработчик события от контрола с каким-нибудь слотом.

А теперь немного грустного на счет русских букв. Как видно на скриншоте, в дизайнере все отображается нормально, если эту программу запустить, то тоже все будет в порядке. Это благодаря тому, что интерфейс описывается в файле .ui в формате XML с кодировкой UTF-8. А вот если попытаться открыть этот же файл в редакторе, то на месте русских букв будут кракозяблы. Редактор кода не понимает эту кодировку. Хуже всего то, что не удается использовать русские буквы в тексте программы. Например, если просто использовать строки на русском языке в той кодировке, в которой сохраняются файлы .cpp (то есть по крайней мере в Windows в кодировке Win-1251), то получим:

А если перекодировать исходник в UTF-8 (и использовать функцию trUtf8), то в окне текст станет читаемым, а в редакторе нет:

Хочется верить, что в будущем разработчики исправят это недоразумение.

UPDATE: Как подсказал в комментариях Vladimir, это так и должно быть и все легко исправляется:

Так и должно быть, чтобы избавиться от крякозябр нужно настроить кодеки

QTextCodec *cyrillicCodec = QTextCodec::codecForName(”CP1251?);
QTextCodec::setCodecForTr(cyrillicCodec);
QTextCodec::setCodecForLocale(cyrillicCodec);
QTextCodec::setCodecForCStrings(cyrillicCodec);

в начале функции main, после создании экземпляра объекта QApplication и все будет зашибись с отображением русских букв.

Заключение

В целом среда разработки мне понравилась, особенно учитывая то, что это еще не окончательная версия (сейчас ее номер 0.9). Среда работает быстро, есть удобные подсказки. Несмотря на проблемы с установкой, потом все заработало и начало компилиться без проблем. Отладчик, хочется верить, быстро починят и к релизу он уже будет работоспособным. Очень жаль, что Qt Creator не удастся использовать в качестве IDE для проектов, которые не используют Qt.

И вообще получилась интересная вещь.

Скачать Qt Creator можно отсюда, версия под Windows весит 208 МБ.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 22, средняя оценка: 3,45)
Загрузка...

комментариев 37

  1. Vladimir:

    >А если перекодировать исходник в UTF-8 (и использовать функцию trUtf8), то в окне текст станет читаемым, а в редакторе нет:

    Чуда юда рыба кит, а не обзорщик из тебя. Так и должно быть, чтобы избавиться от крякозябр нужно настроить кодеки

    QTextCodec *cyrillicCodec = QTextCodec::codecForName(«CP1251»);
    QTextCodec::setCodecForTr(cyrillicCodec);
    QTextCodec::setCodecForLocale(cyrillicCodec);
    QTextCodec::setCodecForCStrings(cyrillicCodec);

    в начале функции main, после создании экземпляра объекта QApplication и все будет зашибись с отображением русских букв.

  2. Power user:

    нажимаешь F4 и привязываешь сигналы к слотам в дизайнере.
    F3 возвращаешься к редактированию Widgets.
    Смотрите шоткаты в дизайнере!

  3. Денис:

    нде, венда, убей себя чуве

  4. ffsdmad:

    Ну ик акой смысл юзать QT под виндой?
    Ни асиливаешь нормальную ос и шрефты на сайте

  5. gleb:

    Словом, kdevelop пока даст даже не сто, а все 1000 очков вперёд.

  6. Jenyay:

    2 Vladimir

    Спасибо, действительно помогло. Сейчас исправлю пост.

  7. Jenyay:

    2 ffsdmad:

    > Ну ик акой смысл юзать QT под виндой?

    Для потенциальной кроссплатформенности.

    2 Power user:

    Заметил еще и кнопочку для перехода в режим редактирования слотов. Немного непривычно, надо будет разобраться что к чему.

  8. miha-ha:

    в линухе всё работает!!! шустро, чётко, давно пора!!!

  9. Jazz:

    > Для потенциальной кроссплатформенности.

    У Вас какой-то экзотический процессор, или mingw поставить нельзя из чисто религиозных соображений? 🙂

  10. Jenyay:

    2 Jazz:

    А при чем тут mingw? Под виндой Qt Creator с помощью MinGW и компилит.

  11. LinuxUser:

    Венда не нужна.

  12. zavulon:

    Опять очередной обзор на примере Hello world, да еще и на винде.

    Я опробовал Qtcreator в Linux на своем текущем проекте среднего размера (около 30 исходников). Все нормально компилируется, запускается и дебаггится.

    Комментарии к обзору:
    1. Дебаггер запускается и даже нормально работает.
    2. Корявая поддержка UTF-8 в винде — это уже непростительно в конце 2008 года. Кто вам посоветовал писать на QT в винде? В следующий раз «поблагодарите» этого человека. Разрабатывать ПО нужно в Linux, а на винде только компилировать Windows-версию бинарика, ну и тестировать.

    Плюсы Qtcreator:
    1. Проект загружается с обычного .pro-файла. QtCreator никак не пытается его при этом изменить (в отличие иногда от KDevelop).
    2. Два отдельных режима перехода между объявлением и реализацией функций: просто переключение между .cpp и .h, и явный переход к реализации в .cpp.

    Из минусов по сравнению с KDevelop:
    1. Да, очень грустно, что нет табов в редакторе.
    2. Комбобокс быстрого перехода к функциям не сортирует эти функции по алфавиту. В результате невозможно найти нужную среди 50 имеющихся!
    3. Слишком много абсолютно ненужных красивостей в интерфейсе. Похож на Windows Media Player, а не на IDE.
    4. Нет нескольких полезных мелочей из-за ранней версии.
    5. Не слишком критично, но QTCreator хавает в 2 раза больше памяти по сравнению с KDevelop. Это все-таки лучше, чем Java-монстр Eclipse.

    Пока явных преимуществ по сравнению с KDevelop нет. К QtCreator стоит присмотреться после выхода финального релиза.

  13. sevenov:

    >1. Да, очень грустно, что нет табов в редакторе.
    Есть, но не совсем табы.
    1. При нажатии на «таб», вываливается список открытых файлов.
    2. Можно сделать слева блок «Open Documents». ( http://sevenov.info/static/uploads/qt.png )
    3. Можно переключаться Ctrl+Tab, как всегда самый лучший и быстрый вариант.

  14. sevenov:

    +
    >3. Слишком много абсолютно ненужных красивостей в интерфейсе. Похож на Windows Media Player, а не на IDE.
    А вы VS2008 видели? Или 2007. Точно не помню. А тут эти красивости как раз в тему и немного разгружает видение.

    >5. Не слишком критично, но QTCreator хавает в 2 раза больше памяти по сравнению с KDevelop. Это все-таки лучше, чем Java-монстр Eclipse.
    зачем не использовать имеющиеся ресурсы? Если, к примеру, 4Гб оперативы, зачем стараться использовать 512 и не больше и дрочить на оставшиеся 3,5Гб. 🙂
    При том, что ест больше памяти, очень быстро стартует и, почти буквально, летает. Ни KDevelop, ни Eclipse, ни, тем более, Visual Studio не могут быть такими шустрыми. И это при условии, что последние 2 IDE жрут побольше, чем QTC.

    >Пока явных преимуществ по сравнению с KDevelop нет.
    Один только «встроенный» дизайнер чего стоит 🙂

    >К QtCreator стоит присмотреться после выхода финального релиза.
    Согласен. Это еще начало, а уже, наконец-то, сделали огромнейший шаг в разработке IDE для Linux. Под винду итак есть достойные.

  15. Thorn:

    Очередное студенческое поделие за $50. С такими багами не то что на рынок — людям показывать смешно! Тут ещё столько работы, что Visual Studio со свистом обгоняет эту Qtелегу.

    > Кто вам посоветовал писать на QT в винде?

    Завулон, завулонь свой рот и не показывай дурь. Если продукт делается ПОД ВИНДУ, то и программировать (теоретически) тоже можно под виндой. А так как тролли так и не освоили программинг под Win32, то и получился отстой, билдящий другой отстой. гы 🙂

    > Похож на Windows Media Player, а не на IDE.

    +1000! Такой парашенский интерфейс мог придумать только отчаянный студент в ночь перед экзаменом. Собсно, трудозатраты на эту статическую лабуду составляли столько же — ночь и утро. 🙂

    > Так и должно быть, чтобы избавиться от крякозябр нужно настроить кодеки

    > QTextCodec *cyrillicCodec = QTextCodec::codecForName(”CP1251?);
    > QTextCodec::setCodecForTr(cyrillicCodec);
    > QTextCodec::setCodecForLocale(cyrillicCodec);
    > QTextCodec::setCodecForCStrings(cyrillicCodec)

    ыыыыыыы :)))) (Это ржут разработчики вижуалстудии.) На дворе 21 век… а в функциях main от Троллей всё ещё 80-ые годы и «правильная» настройка русских букв. БУ-ГО-ГА!!!!!! 🙂 И это поделие Qt выдвигает на роль средства разработки!?!?!? Не смешите мою мышку! Это GWBASIC 21 века, мертвец от рождения. Закопать и не вытаскивать ещё 30 лет!

  16. rusturisto:

    Qt Designer, vim, консоль, g++, gdb, ctags, iconv
    не нужна никакая IDE
    эх, обленился народ

  17. Darked:

    2 rusturisto,
    Ручка, писчая бумага, корректор…. и не нужен никакой принтер! Из той же серии.

  18. Nomad:

    Отстаньте от альфа-версии с претензиями: интересно было бы на альфу очередной VS посмотреть… 🙂

    Что до русских букв, то в Qt есть метод tr(«»), походя решающий все эти проблемы. Главное же — возможнсть автоматически собрать все фразы и слова из tr-ов во всех файлах проекта. Полученный файл с помощью QT Linquist легко обрабатывает любой переводчик, не имеющий ни малейшего отношения к программированию. В результате можно в короткие сроки собрать много языковых версий приложения (Кстати, средства Qt стандартизируют подгрузку языковых модулей). Удобно. Другие так, вроде бы, не умеют.

    Относительно Qt и Windows. В конторе, где я нынче тружусь, компы работают под Linux, Windows и MacOS. Десятки баз и интерфейсов к ним, плюс интеграция с телекоммуникационным оборудованием. Не все компьютеры потянут запуск множества Java-программ (как кроссплатформенной альтернативы). Весь ИТ-отдел — 2 (два) программера и админ. Если бы не Qt, то фиг бы мы справились. А так пишем под любой системой, компилируем, как правило, без дополнительных исправлений на все платформы, получая быстрый код…

    P.S.: Специально для Thorn. Если бы не Opera, Mathematica, Nokia PC Suite и ещё десятки программ, то можно было бы действительно полагать, что Qt под win32 не используется. Алеверды назови мне хоть одну программу для MacOS или Linux написанную и откомпиленную под чудесной VS.

  19. БилДвер:

    Под винду и под linux есть замечательная IDE QDevelop про нее что то ни кто ничего не сказал.

  20. Sagittarius:

    QDevelop рулит. Работает под форточкой и линуксом. В отличии от эклипса использует по минимуму ресурсов, интегрируется со всеми тулзами КуТэ, есть свои плагины…. Правда не осилил автодополнение кода в винде. С цэтагсом не дружит наверное (((

  21. Алексей:

    Слишком большая статья — не осилил. Оставлю свои впечатления. Давно занимаюсь межплатформенным программированием и вопрос IDE для меня не праздный, так как среда разработки должна нравится не только мне, но и «дедям» — молодым программистам, с которыми я веду проекты в лаборатории. В противном случае, я бы ничего не искал, а сидел бы себе в Emacs/vim и не жужжал 🙂

    Установка и под Windows и под Linux у меня прошла без проблем. Особенно порадовала работа в Linux. Инсталлятор под Windows содержит свою версию библиотеки и это плохо — версия успела устареть и требуется шаманское вмешательство, которое под силу не каждому новичку в Qt+MinGw+IDE.

    Надо сказать, что по сравнению с работой в Eclipse есть и преимущества и недостатки. Поэтому я по прежнему работаю и там и там. Правда теперь совсем не использую NetBeans для работы с Qt. На работе пишу проект в Qt Creator, а дома продолжаю его в Eclipse. Разумеется, как сам редактор Eclipse много лучше, чем начальная версия Qt Creator. Возможно, далее, разработчики улучшат средства редактирования кода.

    Кстати, автор сокрушался, что не может использовать Qt Creator для «чистого» программирования в MinGW. Я не понял почему, но в качестве альтернативы предлагаю посмотреть в сторону NetBeans. Использую ее для разных целей. Как платформа для «чистой» работы с Си/Си++ она замечательная. Так же хочется обратить внимание и на средства UML в NetBeans.

  22. Jenyay:

    Вот в сторону NetBeans сейчас и смотрю, правда, для Python — NetBeans IDE for Python. Пока впечатления очень приятные.

  23. EugeneVC:

    Мне не очень он понравился, пока юзаю Kdevelop. Но я думаю он через пару версий будет гуд.

  24. AlienGray:

    Чистый C/C++, C++/wxWidgets — Code::Blocks
    C++/Qt — QtCreator, QDevelop
    Java/Python — NetBeans

  25. Jenyay:

    Да, Code::Blocks хорошая IDE.

  26. drangebrainia:

    Занятно-занятно, нигде раньше на такое не натыкался.

  27. QMake:

    Ответти пожалуйста на глупый вопрос
    Создал форму, жму на компиляцию а он мне такое
    Running build steps for project xxx…
    Creating gdb macros library…
    Starting: C:/Qt/2009.01/qt/bin/qmake.exe C:/Новая папка (4)/xxx/xxx.pro -spec win32-g++ -r CONFIG+=debug_and_release
    Cannot find file: c:\Новая папка (4)\xxx\xxx.pro.
    Exited with code 2.
    Error while building project xxx
    When executing build step ‘QMake’
    где я того ну лоханулся??
    PS
    WINDa у меня

  28. QMake:

    http://www.youtube.com/watch?v=pPp35CbVLKE
    вот как тут делаю а все равно так пишет

  29. QMake:

    Тааак простите дурака!!!
    В следующий раз буду сначала гуглить!!!
    Проблема была в русских буквах в адресе проекта все работает

  30. музыка:

    QT рулит! Смотрю сейчас все больше и больше переписывают под qt.

  31. Валерий:

    Я до сих пор работал и в Eclips, хотя в конце выбрал Code::Blocks. На счет кодировки — в конструкторе используйте кодеки и все будет у вас. До сих пор писал даже без дизайнера диалогов — все в конструкторе писал, хочу попробовать новую айдеху!

  32. Vladimir:

    Не надо паники. Насчет кодировки.

    Открываем любой проект, или создаем новый.
    Жмем кнопку «Проекты». Смотрим (внизу): «Настройка редактора».
    Кодировка файла по умолчанию. Меняем с System на (например) Utf-8.
    Всё.

  33. Алексей:

    Снова приветствую обсуждающих! (первый пост за 25 ноября 2008, 11:20 пп)

    С момента написания статьи и начала обсуждения прошло более двух лет. В Qt и QtCreator изменилось очень многое. Я по прежнему многое пишу в vim+(куча *nix утилит), но следует быть объективным по отношению к QtCreator. Сейчас это уже действительно интересно, особенно с появлением элементов рефакторинга. Собственно, после выхода версии 1.3, необходимость в использовании старого доброго Eclipse для Qt-проектов отпала полностью. То же можно сказать и про NetBeans (в нем уже как год появилась поддержка Qt в начальном виде). Думаю, что дальнейшее развитие QtCreator принесет еще много приятного для тех кто использует Qt в своих разработках. Особенно следует обратить внимание новичков на тот факт, что QtCreator сегодня это native среда для разработки в Qt, т.е. по аналогии это то же что и Visual Studio для технологий Microsoft.

    Еще хочу добавить пару слов о личных пристрастиях 🙂 QtCreator импонирует еще тем, что позволяет подхватить или передать проект на Qt на любом этапе (во многом это возможно за счет полноты проектного файла *.pro от разработчиков самой библиотеки Qt). Это позволяет мне смешивать среды разработки. Я (собственно как и многие из моих сверстников и даже молодых учеников, вплоть до молодых девушек) по прежнему очень многое делаю(ем) средствами vim и смежных с ним мощных инструментов командной строки *nix. QtCreator этому совсем не мешает. Также легко подхватить эти проекты в Eclipse или NetBeanse. Последнее, чаще приходится делать под Windows, нежели в *nix, по понятным причинам. Кроме того, используемый мною стиль программирования изначально не препятствует такой пестроте в выборе средств обработки кода — я не использую визуальные средства моделирования форм в проектах. Таким образом, в моих проектах нет *.uic файлов, что дополнительно упрощает ведение проектов, собственно, абсолютно любыми средствами. Я не против QtDesigner, вообще, 🙂 просто не использую в проектах. Однако, во время творческих поисков бывает нужен и QtDesigner и средства UML и «рисование паровозиков» и многое другое 🙂

  34. Jenyay:

    Неожиданно обсуждение возобновилось. Хотя не могу сказать, что не рад этому. 🙂

  35. dream-x:

    вот все такие профессионалы, а никто даже про UML особо не вспомнил… VIM просто супер, но извините 21 век на дворе проекты в большинстве случаев большие и писать их в виме это полный бред. А Eclipse я так смотрю это как вампиру чеснок для большинства народа, хотя пока вы сдесь тупостью страдаете джависты спокойно пишут свои проги и плюют на медлительность… По себе скажу запущенно 4 Версии эклипса с определенными параметрами все они вместе жрут чуть более 900 мегов оперативы, в компе стоят 3.25 и вы знаете если бы они жрали 2 гига я бы даже не волновался.

  36. Вячеслав:

    Если говорить о средах разработки(IDE) под Windows,
    то никто чемуто не упоминает Dev-C++ , основан на
    GCC (GNU Compiler Collection).
    http://www.bloodshed.net/
    http://www.bloodshed.net/dev
    В качестве компилятора используется mingw, но есть возможность полключать другие компиляторы.

  37. Денис:

    Выполняется сборка проекта animatedtiles…
    Настройки не изменились, этап qmake пропускается.
    Запускается «C:/Qt/2010.05/mingw/bin/mingw32-make.exe» -w
    mingw32-make: Entering directory `C:/Qt/2010.05/qt/examples/animation/animatedtiles-build-desktop’

    C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug all

    mingw32-make[1]: Entering directory `C:/Qt/2010.05/qt/examples/animation/animatedtiles-build-desktop’

    mingw32-make[1]: Nothing to be done for `all’.

    mingw32-make[1]: Leaving directory `C:/Qt/2010.05/qt/examples/animation/animatedtiles-build-desktop’

    C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Release all

    mingw32-make[1]: Entering directory `C:/Qt/2010.05/qt/examples/animation/animatedtiles-build-desktop’

    g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I»..\..\..\include\QtCore» -I»..\..\..\include\QtGui» -I»..\..\..\include» -I»..\..\..\include\ActiveQt» -I»tmp\moc\release_shared» -I»..\animatedtiles» -I».» -I»..\..\..\mkspecs\win32-g++» -o tmp\obj\release_shared\main.o ..\animatedtiles\main.cpp

    mingw32-make[1]: Leaving directory `C:/Qt/2010.05/qt/examples/animation/animatedtiles-build-desktop’

    mingw32-make: Leaving directory `C:/Qt/2010.05/qt/examples/animation/animatedtiles-build-desktop’
    Ребят, такая вот эрунда, только поставил Qt Creator и запустил простейший пример. И он ошибку такую:

    ..\animatedtiles\main.cpp:256:20: error: main.moc: No such file or directory

    mingw32-make[1]: *** [tmp/obj/release_shared/main.o] Error 1

    mingw32-make: *** [release-all] Error 2

    Процесс «C:/Qt/2010.05/mingw/bin/mingw32-make.exe» завершился с кодом %2.
    Возникла ошибка при сборке проекта animatedtiles (цель: Настольный компьютер)
    Во время выполнения сборки на этапе «Сборка»

Leave a comment

Subscribe without commenting