自定义视图类型对象

在Qt应用中,列表视图、表格视图、树状视图都是由抽象视图派生而来的,抽象视图作为一种视图的抽象实现,允许开发者由其派生出各种自定义的视图。以Qt提供的“Chart”样例(如下图)举例,它左侧为表格控件,但右侧的图表是由抽象视图派生而来的自定义视图组件。
Chart应用
在Qt中这类派生自抽象视图的自定义组件会被CukeTest一律当作自定义视图ItemView控件处理。

事实上列表视图、表格视图和树状视图都是由抽象视图派生出来的,但是CukeTest对这些常用的视图做了支持,因此不会当作ItemView控件而是各自相对的控件处理。

自定义视图与列表、表格、树状三种视图的关系

从开头的介绍中,我们了解了列表、表格、树状三种视图也是由抽象视图派生而来的一种自定义视图。并且,从自定义视图的类型定义,如下:

  1. export interface IQItemView extends IQtControl {
  2. data(): Promise<string[] | string[][]>;
  3. select(index: number): Promise<void>;
  4. selectedIndex(): Promise<number>;
  5. rowCount(): Promise<number>;
  6. columnCount(): Promise<number>;
  7. scrollToTop(): Promise<void>;
  8. scrollTo(index: number): Promise<void>;
  9. scrollToBottom(): Promise<void>;
  10. }
  11. export interface IQItemViewItem extends IQtControl {
  12. value(): Promise<string>;
  13. select(): Promise<void>;
  14. }

可以了解到,列表、表格、树状三种视图所提供的很多方法是与自定义视图相似的。

可以讲自定义视图与另外三种视图的关系理解为:
三种视图继承了自定义视图的方法,并根据各自的特点对继承的方法进行了扩展,从而有了各不相同操作和属性方法。