如何使用QTools创建QTreeWidget?

时间:2019-02-15 17:31:52

标签: common-lisp

我想创建一个QTreeWidget,它具有简单的行(无层次结构),具有图像的列以及具有文本信息的其他列。

https://doc.qt.io/qt-5/qtreewidget.html

我正在查看QToolsQtools-ui,尽管它们的示例工作正常,但我找不到TreeView示例,也无法理解如何处理所有这些Qt机制。

我确实发现合适的班级存在……

const fruits = {
  a: 'apple',
  b: 'banana'
} as const; // requires TS3.4+

type FruitValues = (typeof fruits)[keyof typeof fruits]; // "apple" | "banana"

edit :grep确实在Qtools源文件中找到了(org.shirakumo.qtools+common-lisp:find-qt-class-name "qtreewidget") "QTreeWidget" t ,但没有找到QTreeWidget

不用说我是Qt的新手。

欢迎任何示例!

1 个答案:

答案 0 :(得分:1)

这是QTreeWidget的最小示例:

(defpackage #:qtools-tree
  (:use #:cl+qt)
  (:export #:main))

(in-package #:qtools-tree)
(in-readtable :qtools)

(define-widget main-window (QWidget)
  ())

(define-subwidget (main-window tree) (q+:make-qtreewidget main-window)
  (setf (q+:column-count tree) 3)
  (mapc (lambda (item)
          (q+:add-top-level-item tree
                                 (q+:make-qtreewidgetitem tree (list item))))
        '("Sun" "Mercury" "Venus" "Earth" "Mars"))
  (q+:resize-column-to-contents tree 0))

(define-subwidget (main-window layout) (q+:make-qvboxlayout main-window)
  (q+:add-widget layout tree))

(defun main ()
  (with-main-window (window (make-instance 'main-window))))