模型视图(12):【类】QColumnView[官翻]

QColumnView 类

QColumnView类提供了列的视图的模型/视图实现。

Header:#include < QColumnView >
qmake:QT += widgets
Inherits:QAbstractItemView
Inherited By:

详述

QColumnView在许多QListViews中显示一个模型,每个QListViews对应树中的每个层次结构。这有时被称为级联列表。

QColumnView类是模型/视图类之一,是Qt的模型/视图框架的一部分。

QColumnView实现了QAbstractItemView类定义的接口,允许它显示由QAbstractItemModel类派生的模型提供的数据。

参见: Model/View Programming.

属性

  1. resizeGripsVisible: bool 指定列表视图是否获取调整大小的夹点
    默认情况下,visible设置为true

公共函数

  1. QColumnView(QWidget *parent = nullptr)

  2. virtual ~QColumnView()

  3. QList< int > columnWidths() const

  4. void setColumnWidths(const QList< int > &list)

  5. QWidget * previewWidget() const

  6. void setPreviewWidget(QWidget *widget)

  7. bool resizeGripsVisible() const

  8. void setResizeGripsVisible(bool visible)

重新实现的公共函数

  1. virtual QModelIndex indexAt(const QPoint &point) const override
  2. virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) override
  3. virtual void selectAll() override
  4. virtual void setModel(QAbstractItemModel *model) override
  5. virtual void setRootIndex(const QModelIndex &index) override
  6. virtual void setSelectionModel(QItemSelectionModel *newSelectionModel) override
  7. virtual QSize sizeHint() const override
  8. virtual QRect visualRect(const QModelIndex &index) const override

信号

  1. void updatePreviewWidget(const QModelIndex &index)

受保护的函数

  1. virtual QAbstractItemView * createColumn(const QModelIndex &index)
  2. void initializeColumn(QAbstractItemView *column) const

重新实现的受保护的函数

  1. virtual void currentChanged(const QModelIndex &current, const QModelIndex &previous) override
  2. virtual int horizontalOffset() const override
  3. virtual bool isIndexHidden(const QModelIndex &index) const override
  4. virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override
  5. virtual void resizeEvent(QResizeEvent *event) override
  6. virtual void rowsInserted(const QModelIndex &parent, int start, int end) override
  7. virtual void scrollContentsBy(int dx, int dy) override
  8. virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) override
  9. virtual int verticalOffset() const override
  10. virtual QRegion visualRegionForSelection(const QItemSelection &selection) const override

示例

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QStandardItemModel standardModel;
    QStandardItem *rootNode = standardModel.invisibleRootItem();

    //defining a couple of items
    QStandardItem *americaItem = new QStandardItem("America");
    QStandardItem *mexicoItem =  new QStandardItem("Canada");
    QStandardItem *usaItem =     new QStandardItem("USA");
    QStandardItem *bostonItem =  new QStandardItem("Boston");
    QStandardItem *europeItem =  new QStandardItem("Europe");
    QStandardItem *italyItem =   new QStandardItem("Italy");
    QStandardItem *romeItem =    new QStandardItem("Rome");
    QStandardItem *veronaItem =  new QStandardItem("Verona");

    //building up the hierarchy
    rootNode->    appendRow(americaItem);
    rootNode->    appendRow(europeItem);
    americaItem-> appendRow(mexicoItem);
    americaItem-> appendRow(usaItem);
    usaItem->     appendRow(bostonItem);
    europeItem->  appendRow(italyItem);
    italyItem->   appendRow(romeItem);
    italyItem->   appendRow(veronaItem);

    QColumnView view;
    view.setModel(&standardModel);
    view.show();

    QTreeView tree;
    tree.setModel(&standardModel);
    tree.show();
    qDebug() << view.width() << view.y();
    tree.move(view.x() + view.width(),view.y());

    return a.exec();
}
QResizeEvent是QT中的一个事件,用于处理窗口大小变化的事件。该可以被子重新实现,以接收传递给事件参数的窗口大小变化事件。当调用resizeEvent()时,窗口已经具有新的几何形状,而旧的大小可以通过QResizeEvent::oldSize()访问。在处理大小调整事件后,窗口将被擦除并立即接收到绘制事件。在此处理程序中不需要进行绘图操作。 当QT运行时自动调用resize函数事件或者其他窗口控件大小发生变化时,会触发resize事件。如果想要在拖动主窗口或更改大小时,让窗口中的组件随窗口一起缩放,需要重写resizeEvent()函数。因为在窗口构造完成之后,子窗口的大小是固定的,只有在resizeEvent()事件函数中才能获取到各个控件正确的大小。 在实际应用中,需要注意以下几点: 1、函数名称唯一,因为resizeEvent()是QT的固有事件函数,我们只需要重写其功能,丰富其功能,而不是更改函数名称。 2、在头文件中声明resizeEvent()函数:void resizeEvent(QResizeEvent *event)。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [QT事件之resizeEvent事件触发(2)](https://blog.csdn.net/weixin_43646126/article/details/114873835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值