我正在尝试使用 Common Lisp 和 Qtools 库创建 QT4/qwt5 曲线图。
这是我到目前为止得到的精简版:
(define-widget main-window (QWidget)
())
(define-subwidget (main-window plot) (q+:make-qwtplot main-window))
(define-subwidget (main-window c1) (q+:make-qwtplotcurve "data")
(setf (q+:data c1)
;... -> what goes here?
(q+:attach c1 plot))
(define-subwidget (main-window layout) (q+:make-qvboxlayout main-window)
(q+:add-widget layout plot))
(defun main () (with-main-window (window 'main-window)))
一个空图显示正常,但我如何添加数据?
我试过了:
(setf (q+:data c1)
(values '(1.0 1.0) '(2.0 2.0) 2))
和
(setf (q+:data c1)
(values #(1.0 1.0) #(2.0 2.0) 2))
这会产生:在 # 上找不到带有参数的适用方法 setData ((1.0 1.0) (2.0 2.0) 2)
我也尝试将它传递给 QPolygonF,但我不知道如何正确构造它。它适用于空的 QPolygonF,但我怎样才能添加点?文档建议使用流操作符来添加点,但是 lisp/qtools 的等价物是什么?
我还尝试创建一个 QwtArrayData 对象,例如:
(q+:make-qwtarraydata #(1.0 2.0) #(1.0 2.0))
这会产生错误:“没有为参数找到适用的构造函数 QwtArrayData (#(1.0 2.0) #(1.0 2.0))”