3

我正在尝试使用 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))”

4

0 回答 0