qt qtable view 和 table widget啥区别
时间: 2023-11-22 10:04:28 浏览: 246
Qt中的QTableView和QTableWidget都是用于显示表格数据的控件,但它们的实现方式有所不同。
QTableView是一个基于MVC模式的控件,它会使用一个模型(数据)来管理表格中的数据,并且使用一个委托(视图)来显示这些数据。这种模型-视图的方式使得QTableView具有更强的灵活性和定制性,你可以自定义数据模型和视图的外观和行为。
QTableWidget是一个继承自QTableView的控件,但是它内置了一个数据模型和视图,所以使用起来比较方便。它可以直接通过API添加、删除、修改表格中的数据,同时也不需要设置数据委托。
因此,如果你需要展示简单的静态表格数据,或者你不需要对表格数据进行复杂的操作和处理,那么可以使用QTableWidget。但是如果你需要更高的可定制性和灵活性,那么可以使用QTableView。
相关问题
Qtable view左边距
根据引用\[1\]中的样式设置代码,可以看出QTableWidget的左外边距是20px。
#### 引用[.reference_title]
- *1* *3* [QTableWidget高级使用总结](https://blog.csdn.net/yinsizhilian/article/details/109649495)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Qt常用控件介绍(二)](https://blog.csdn.net/Liuzhu_shusheng_DH/article/details/118468620)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
qt 拖动qtable数据到qtreewidget上
可以通过以下步骤实现将QTableWidget中的数据拖动到QTreeWidget上:
1.启用QTableWidget中的拖放功能,设置setDragEnabled(True)。
2.在QTableWidget中设置所需的MIME类型,以便在拖动时传递数据。可以使用setMimeTypes()方法设置MIME类型。
3.在QTableWidget中实现dragEvent()方法,以便在拖动时设置拖动数据的MIME类型和数据。
4.在QTreeWidget中实现dropEvent()方法,以便在放置时获取拖动数据并将其添加到QTreeWidget中。
下面是一个示例代码,演示如何将QTableWidget中的数据拖动到QTreeWidget上:
```python
from PyQt5.QtWidgets import QApplication, QTableWidget, QTreeWidgetItem, QTreeWidget, QWidget, QVBoxLayout
from PyQt5.QtCore import Qt, QMimeData
from PyQt5.QtGui import QDrag
class TableWidget(QTableWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setDragEnabled(True)
self.setRowCount(4)
self.setColumnCount(2)
self.setItem(0, 0, QTableWidgetItem("Item 1"))
self.setItem(0, 1, QTableWidgetItem("Value 1"))
self.setItem(1, 0, QTableWidgetItem("Item 2"))
self.setItem(1, 1, QTableWidgetItem("Value 2"))
self.setItem(2, 0, QTableWidgetItem("Item 3"))
self.setItem(2, 1, QTableWidgetItem("Value 3"))
self.setItem(3, 0, QTableWidgetItem("Item 4"))
self.setItem(3, 1, QTableWidgetItem("Value 4"))
self.setMimeTypes(["text/plain"])
def mouseMoveEvent(self, event):
if event.buttons() == Qt.LeftButton:
mimeData = QMimeData()
item = self.itemAt(event.pos())
if item is not None:
mimeData.setText(item.text())
drag = QDrag(self)
drag.setMimeData(mimeData)
drag.exec_(Qt.MoveAction)
class TreeWidget(QTreeWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setAcceptDrops(True)
def dropEvent(self, event):
if event.mimeData().hasText():
item = QTreeWidgetItem(self)
item.setText(0, event.mimeData().text())
class Widget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
layout = QVBoxLayout(self)
self.tableWidget = TableWidget(self)
self.treeWidget = TreeWidget(self)
layout.addWidget(self.tableWidget)
layout.addWidget(self.treeWidget)
if __name__ == '__main__':
app = QApplication([])
widget = Widget()
widget.show()
app.exec_()
```
阅读全文