1. 程式人生 > >QT 自定義混合控制元件——基於View/Model/Delegate的QTableView/QTreewidget/Combobox實現

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=newQTreeWidgetItem(ui->treeWidget,QStringList(QString::fromLocal8Bit("哈嘍QT:")));
QTreeWidgetItem*subitem=newQTreeWidgetItem(topitem);
ui->treeWidget->setItemWidget(subitem,0,subTableView);
//ui->treeWidget->removeItemWidget();//刪除一個xx
//再加一個tableview
QTreeWidgetItem
*topitem1=newQTreeWidgetItem(ui->treeWidget,QStringList(QString::fromLocal8Bit("哈嘍哈嘍:")));
QTreeWidgetItem*subitem1=newQTreeWidgetItem(topitem1);
ui->treeWidget->setItemWidget(subitem1,0,subTableView1);

艾瑪,我寫不下去了,貼個圖吧,再貼個key程式碼,順便再給個專案原始碼下載連結,有心人慢慢看吧。

https://download.csdn.net/download/luoqiang_sky/10321051#comment

點選開啟連結