2024-03-29 12:05:26 发布
网友
我有一个主窗口,里面有一个区域。该区域有两个子窗口,可能更多。我希望每个人都有一个QListWidget来共享信息,并且它们是同步的。我搜索了一下,但找不到任何帮助。你知道吗
我在想一个类似静态列表的东西,我想在所有子窗口之间共享数据,并允许任何人一次处理一个窗口
一个小部件只能有一个父部件,并且它是在属于父部件的窗口中绘制的,因此直接问题的答案是它不能。但我认为在后台,您希望多个视图共享相同的数据并进行同步,如果是这样,解决方案是使用代理,以便多个模型始终共享相同的数据。你知道吗
在QListWidget的情况下,您不能设置一个模型,但它将被用作基础,而widgets副本将是QListView。你知道吗
from PyQt5 import QtCore, QtWidgets class MainWindow(QtWidgets.QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) mdiarea = QtWidgets.QMdiArea() self.setCentralWidget(mdiarea) list_widget = QtWidgets.QListWidget() for i in range(10): it = QtWidgets.QListWidgetItem('item {}'.format(i)) it.setFlags(it.flags() | QtCore.Qt.ItemIsEditable) list_widget.addItem(it) sub_window = QtWidgets.QMdiSubWindow() sub_window.setWidget(list_widget) mdiarea.addSubWindow(sub_window) for _ in range(4): list_view = self.create_qlistview(list_widget.model()) sub_window = QtWidgets.QMdiSubWindow() sub_window.setWidget(list_view) mdiarea.addSubWindow(sub_window) def create_qlistview(self, model): proxy = QtCore.QIdentityProxyModel() proxy.setSourceModel(model) list_view = QtWidgets.QListView() list_view.setModel(proxy) return list_view if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) w = MainWindow() w.show() sys.exit(app.exec())
一个小部件只能有一个父部件,并且它是在属于父部件的窗口中绘制的,因此直接问题的答案是它不能。但我认为在后台,您希望多个视图共享相同的数据并进行同步,如果是这样,解决方案是使用代理,以便多个模型始终共享相同的数据。你知道吗
在QListWidget的情况下,您不能设置一个模型,但它将被用作基础,而widgets副本将是QListView。你知道吗
相关问题 更多 >
编程相关推荐