Paste number 63906: Qt tutorial 6

Paste number 63906: Qt tutorial 6
Pasted by: sohail
When:2 years, 1 month ago
Share:Tweet this! | http://paste.lisp.org/+1DB6
Channel:None
Paste contents:
Raw Source | XML | Display As
(in-package :qt)

(defmacro qsignal (sig)
  (concatenate 'string "2" sig))

(defmacro qslot (slot)
  (concatenate 'string "1" slot))

(defparameter *app* (make-instance 'qlisp-application))

(defclass lcd-range (qwidget) ())

(defmethod initialize-instance :after ((self lcd-range)
                                       &rest args)
  (declare (ignore args))
  (let ((lcd (make-instance 'qlcdnumber 
                            :numdigits 2))
        (slider (make-instance 'qslider
                               :orientation Qt-Horizontal))
        (layout (make-instance 'qvbox-layout)))

    (qlcdnumber-set-segment-style lcd QLCDNumber-Filled)
    
    (qabstract-slider-set-range slider 0 99)
    (qabstract-slider-set-value slider 0)
    (qobject-connect slider (qsignal "valueChanged(int)")
                     lcd (qslot "display(int)"))

    (qlayout-add-widget layout lcd)
    (qlayout-add-widget layout slider)
    (qwidget-set-layout self layout)))

(defclass my-widget (qwidget)
  ())

(defmethod initialize-instance :after ((self my-widget)
                                       &rest args)
  (declare (ignore args))
  (let ((quit (make-instance 'qpush-button
                             :text (make-instance 'qstring :ch "Quit")))
        (grid (make-instance 'qgrid-layout))
        (layout (make-instance 'qvbox-layout)))
    (qwidget-set-font quit (make-instance 'qfont
                                          :family (make-instance 'qstring
                                                                 :ch "Times")
                                          :pointsize 18
                                          :weight QFont-Bold))
    (qobject-connect quit (qsignal "clicked()")
                     *app* (qslot "quit()"))

    (loop for row from 0 to 2
       do (loop for column from 0 to 2
             do (let ((lcd-range (make-instance 'lcd-range)))
                  (qgrid-layout-add-widget grid lcd-range row column))))

    (qlayout-add-widget layout quit)
    (qbox-layout-add-layout layout grid)
    (qwidget-set-layout self layout)))

(let ((widget (make-instance 'my-widget)))
  (qwidget-show widget)
  (qapplication-exec))

(sb-ext:quit)

This paste has no annotations.

Colorize as:
Show Line Numbers

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.