понедельник, 2 июля 2012 г.

Использование Qt для реализации GUI в Common Lisp

У меня нет никаких предрассудков насчёт Qt и на десктопе у меня KDE, так что для первых шагов в GUI я воспользовался проектом под названием CommonQt. Это CFFI-биндинги к libqt и libsmoke.

Здесь я запишу, как настроить окружение для того, чтобы писать Qt-приложения. Ниже скриншот конечного результата. ;)

Установка библиотек Qt

Как написано в инструкции по установке некоей Eccada (я действительно без понятия, что это такое), нужно сначала установить девелоперские библиотеки Qt:

  • libqt4-dev
  • libsmokeqt4-dev
  • libqt4-webkit

Между прочим, для того, чтобы поставить эти библиотеки себе на гибрид Squeeze+Wheezy, мне пришлось целиком обновиться до Wheezy. :)

Установка лисповых биндингов

С quicklisp всё делается на раз-два: (ql:quickload :qt) и всё. На этом шаге как раз и можно определить, все ли нужные библиотеки были установлены.

Минимальная программа прямо в REPL

Для проверки, всё ли работает правильно, пишем первый пример со страницы приветствия документации Qt в Slime REPL:


(ql:quickload :qt)
(in-package :qt)
;; Включаем reader macro '#_'
(enable-syntax)
(defvar *qapp* (make-qapplication))
(defvar *editor* (#_new QTextEdit))
(#_show *editor*)
(#_exec *qapp*)

Должно появиться маленькое окошко с текстовым редактором внутри, как на скриншоте выше.