【问题标题】:QListWidget synchronized using common datasource [closed]使用公共数据源同步的 QListWidget [关闭]
【发布时间】:2019-07-23 21:54:33
【问题描述】:

我有一个主窗口,里面有一个 mdiArea。在该区域有 2 个子窗口,可能更多。我想让每个人都有一个共享信息的 QListWidget 并且它们是同步的。我搜索过,但找不到任何帮助。

我在想一个静态列表之类的东西,我想在所有子窗口之间共享数据并允许任何人在它们上工作,一次 1 个窗口

【问题讨论】:

    标签: python pyqt pyqt5 qlistwidget


    【解决方案1】:

    一个小部件只能有一个父级,并且它是在属于父级的窗口中绘制的,所以你直接问题的答案是它不能。但我认为在后台你希望多个视图共享相同的数据并同步,如果是这样,解决方案是使用代理,以便多个模型始终共享相同的数据。

    在 QListWidget 的情况下,您不能设置模型,但它将用作基础模型,小部件副本将是 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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 2010-10-01
      • 2021-06-30
      • 2021-08-18
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多