QStandardItemModel显示QOpenglWidget视图
时间: 2024-05-17 21:18:51 浏览: 157
要在QStandardItemModel中显示QOpenGLWidget视图,您可以通过自定义QStandardItemModel和QStandardItemDelegate来实现。下面是一个简单的示例代码:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QListView, QOpenGLWidget, QApplication, QMainWindow
class OpenGLDelegate(QStandardItem):
def __init__(self, widget):
super().__init__()
self.widget = widget
class OpenGLDelegate(QStandardItemModel):
def __init__(self, parent=None):
super().__init__(parent)
def data(self, index, role=Qt.DisplayRole):
if role == Qt.DisplayRole:
item = self.itemFromIndex(index)
if isinstance(item, OpenGLDelegate):
return item.widget
return super().data(index, role)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.model = OpenGLDelegate()
self.model.appendRow(OpenGLDelegate(QOpenGLWidget()))
self.model.appendRow(OpenGLDelegate(QOpenGLWidget()))
self.view = QListView()
self.view.setModel(self.model)
self.setCentralWidget(self.view)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个例子中,我们首先创建了一个自定义的OpenGLDelegate类,它继承自QStandardItem,以便在QStandardItemModel中存储QOpenGLWidget。然后,我们创建了一个自定义的OpenGLDelegateModel类,继承自QStandardItemModel,并重写了data()方法以返回相应的QOpenGLWidget。最后,我们在MainWindow中使用QListView来显示模型中的内容。
请注意,这只是一个简单的示例,您可以根据您的需求进行更多的自定义和扩展。
阅读全文