QT 自定义混合控件——基于View/Model/Delegate的QTableView/QTreewidget/Combobox实现

QT自定义控件,查看本文章需要具备一定的View/Model基础知识(没有也可以看)。

本文实现了在一个QTreeWidget中插入一个QTableView,然后再在QTableView的每一个item中插入一个QCombobox,当然知道了方法你可以在任意item中插入任意的widget。

实现这个自定义部件的关键是QTreewidget部件的SetItemWidget方法,在实现的过程中我也尝试着使用QTreeview来插入部件,但是QTreeview没有SetItemWidget这个方法,那如果只是使用QDelegate来在QTreeview中实现想要的功能呢?emmmm。。。因为delegate中定义的视图在混合数据比较多的时候数据处理起来肯定会比较麻烦,所以还是拉倒吧。

 
  
//加一个tableview
    QTreeWidgetItem *topitem = new QTreeWidgetItem(ui->treeWidget,QStringList(QString::fromLocal8Bit("  哈喽QT:")));
    QTreeWidgetItem* subitem = new QTreeWidgetItem(topitem);
    ui->treeWidget->setItemWidget(subitem,0,subTableView);
    //ui->treeWidget->removeItemWidget(); // 删除一个xx
//再加一个tableview
    QTreeWidgetItem *topitem1 = new QTreeWidgetItem(ui->treeWidget,QStringList(QString::fromLocal8Bit("  哈喽哈喽:")));
    QTreeWidgetItem* subitem1 = new QTreeWidgetItem(topitem1);
    ui->treeWidget->setItemWidget(subitem1,0,subTableView1);

艾玛,我写不下去了,贴个图吧,再贴个key代码,顺便再给个项目源码下载链接,有心人慢慢看吧。

https://download.csdn.net/download/luoqiang_sky/10321051#comment点击打开链接

QT 自定义混合控件——基于View/Model/Delegate的QTableView/QTreewidget/Combobox实现_第1张图片

你可能感兴趣的:(Cpp)