QStandardItemModel显示QOpenglWidget
时间: 2024-05-17 07:18:51 浏览: 161
您可以通过自定义一个继承自 QStandardItemModel 的模型类,并重写其中的数据获取方法,以将数据进行关联和显示。下面是一个示例代码:
```python
import sys
from PyQt5.QtCore import Qt, QModelIndex
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QApplication, QOpenGLWidget, QTreeView, QVBoxLayout, QWidget
class OpenGLWidget(QOpenGLWidget):
def __init__(self, parent=None):
super(OpenGLWidget, self).__init__(parent)
class CustomModel(QStandardItemModel):
def __init__(self, parent=None):
super(CustomModel, self).__init__(parent)
def data(self, index, role=Qt.DisplayRole):
if role == Qt.DisplayRole:
return "Item {}".format(index.row())
return super(CustomModel, self).data(index, role)
if __name__ == '__main__':
app = QApplication(sys.argv)
# 创建主窗口和布局
window = QWidget()
layout = QVBoxLayout(window)
# 创建一个自定义的模型类
model = CustomModel()
# 将模型与视图关联
view = QTreeView()
view.setModel(model)
layout.addWidget(view)
# 创建一个 OpenGL 的小部件
gl_widget = OpenGLWidget()
layout.addWidget(gl_widget)
# 添加一些数据到模型中
for i in range(5):
item = QStandardItem()
model.appendRow(item)
window.show()
sys.exit(app.exec_())
```
上述代码创建了一个窗口,其中包含一个 QTreeView(用于显示模型数据)和一个 QOpenGLWidget(用于显示 OpenGL 的内容)。通过自定义的 QStandardItemModel 类,重写其中的 data 方法,可以将数据与模型进行关联,并在 QTreeView 中显示。同时,您可以在模型中添加数据项,以便在 QTreeView 中显示。
阅读全文