вторник, 15 февраля 2011 г.

Ознакомление с редактором

Итак, в прошлом занятии мы создали первую программу "Hello, world!"
В этот раз мы познакомимся с редактором, и даже напишем несколько строчек кода.
Для начала, откройте проект с прошлым занятием.
Для этого, нажмите "Файл" -> "Недавние проекты" -> "HelloWorld.pro"
По умолчанию будет выбран раздел "редактор" на левой панели. Если этого не сделано - щелкните на кнопку "редактор" в левой части экрана.
Итак, мы перешли в режим редактирования исходного кода.
В окне "Проект" мы можем наблюдать заголовочные файлы, исходники и файлы форм.
Давайте щелкнем два раза на mainwindow.cpp


Откроется окно с исходным кодом исходного кода, относящегося к главному окну.
Все по-умолчанию пронумерованы. Это удобно для выявления ошибки при неудачном построении.
Как Вы видите, в редакторе встроена система поддержки подсветки синтаксиса. Это сделано для упрощения восприятия написанного кода.
Все ключевые слова подсвечиваются золотистым. Все классы библиотеки Qt подсвечиваются фиолетовым. Все директивы процессора подсвечиваются синим. Все подключаемые файлы подсвечиваются зеленым.
Таким образом, исходный код гораздо приятнее просматривать.
Так же, как Вы заметили, в редакторе присутствует поддержка форматирования, или система отступов.
По-умолчанию система отступов настроена на использование пробелов для отступов, вместо табуляции, как это принято во многих средах разработки. Такое решение обоснованно отсутствием поддержки tab-ов в некоторых редакторах, или различным размером табуляции, что резко приводит легко читаемый код в проблематичный. Но, я не думаю что мы пока собираемся экспортировать наш проект в другую среду, так что следует эту функцию отключить.
Нажмите "Инструменты"->"Параметры", в появившемся окне выберите "Редактор" и настройте параметры редактора так, как показано на изображении ниже
После этого нажмите "Ок".
Использование tab-ов упрощает переход между строками кода, так что я настоятельно рекомендую использовать данную функцию.
В редакторе Qt Creator'а существует удобная функция автоформатирования текста. Вы можете испробовать её, вручную убрав в коде отступы, или добавив новые, а затем выровнить текст нажатиями Ctrl+A , Ctrl+I.
Так же, если Вы нажмете Ctrl+<пробел> , то увидите, что редактор подсказывает Вам, какие функции и константы Вы можете использовать. Если начать набирать название какой-либо функции, то список будет автоматически сокращаться, отсеивая все не подходящие варианты.
Давайте щелкнем два раза на mainwindow.ui
Перед нами откроется уже видимая нами ранее форма.
Сейчас мы будем описывать событие, которое произойдет по нажатию кнопки PushButton.
В Qt используется система сигналов и слотов для обработки событий. Сигналом, к примеру, может быть нажатие кнопки, или наведение мышки на кнопку, слотом же являются события, которые должны произойти по проишествии сигнала.
Для того, чтобы программа понимала, что какому-то сигналу соответствует какой-то слот, используется функция connect, которая связывает выбранный сигнал с заданным слотом.
Qt никак не ограничивает нас в соединении сигналов и слотов. Одному сигналу можно ставить в соответствие несколько слотов, одному слоту может соответствовать несколько сигналов.
Код слота выполняется в отдельном потоке, т.е. параллельно выполнению основной программы, что приводит к отсутствию "зависаний", как мы могли наблюдать в некоторых библиотеках.
Итак, давайте наконец перейдем от слов к делу, и напишем простенький код для кнопки Push Button.
Нажмите на Push Button правой кнопкой, и вибирете "перейти к слоту", а в появившемся окне "выбор сигнала" выбирите clicked()
Это означает, что наш код будет вызываться по сигналу "кнопка нажата".
После того, как Вы нажмете "Ок", Вы сразу же попадете обратно в редактор. Но, как Вы видете, в файле появился новый код.
Редактор автоматически создал секцию слота, в котором мы должны описывать наш обработчик. Как видите, название слота очень наглядное: on + <название объекта> + <название сигнала>
  • Слово "on" означает, что данный слот был создан автоматически, с помощью среды программирования. Таким образом, запрещено вручную создавать слоты со словом "on" в начале названия.
Редактор выделил красным цветом секцию, в которой код был изменен с момента предыдущей сборки.
Щелкните между двумя фигурными скобочками, и наберите следующий текст:
ui->label->setText("Key was pressed!");
Конечный код должен выглядеть следующим образом:
ui означает, что мы обращаемся к форме, т.е. к User Interface.
Обратите внимение, кто когда Вы введете ui->, то редактор предложит Вам список объектов, которые Вы можете использовать. ui->label означает, что мы обращаемся к объекту с именем label, находящемся на нашей форме. Функция setText задаёт новый текст на label.
Нажмите Ctrl+R, чтобы собрать и запустить ваш проект.
Нажмите кнопку и убедитесь в отличном результате:
Текст надписи поменялся! Могу Вас поздравить, это хороший результат для начала!
В следующей статье, мы познакомимся с некоторыми разработанными классами, применяемыми непосредственно в коде.

7 комментариев:

  1. Что-то мне это все Delphi живо напомнило. Хотя со школы так ни разу и не пользовался. Печально.

    ОтветитьУдалить
  2. Явно получше MFC, которое я когда-то учил, но еще далеко до WPF.
    И указатели с деструкторами наверно остались только в С++, во всех остальных языках живут без них.

    ОтветитьУдалить
  3. Найти бы в себе ещё силы это всё изучать!

    ОтветитьУдалить
  4. Remy Wolf, наличие указателей дает возможность писать гибкие конструкции.
    На счет MFC и .NET согласен, но Qt активно развивается, и кроссплатформенность это большой плюс.

    ОтветитьУдалить
  5. Что за графическая оболочка операционной системы у тебя стоит? Симпатично смотрится

    ОтветитьУдалить
  6. Лёва, я пользуюсь графической оболочкой Gnome версии 2.30.2, которая шла вместе с операционной системой Linux Mint 9

    ОтветитьУдалить
  7. тема похожа clearlooks, но зеленая, прямо троллтеховская :)

    ОтветитьУдалить