У виджета может быть только один родитель, и он был нарисован в окне, принадлежащем родителю, поэтому ответ на ваш прямой вопрос заключается в том, что он не может. Но я думаю, что в фоновом режиме вы хотите, чтобы несколько представлений совместно использовали одни и те же данные и были синхронизированы, если это так, решение состоит в том, чтобы использовать прокси, чтобы несколько моделей всегда совместно использовали одни и те же данные.
В случае 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())
Я также использовал dumpasn1
с хорошим успехом в течение нескольких лет), затем я решил, что смотреть на вложенные теги длиной 200 строк было немного сложно следить на экране и хотел чего-то более динамичного, чтобы я мог сворачивать части дерева и тому подобное.
Это то, что я пытаюсь создать с помощью моего собственного asn1js клиентского JavaScript-декодера ASN.1. Он также имеет открытый исходный код и использует огромный файл конфигурации «известных OID» dumpasn1. Не пытается обнаружить все ошибки формата ASN.1, только те, которые невозможно декодировать ... (например, не потрудится отличить DER от BER, например INTEGER с дополнительными ведущими нулями)
Ага, это - это бессовестная самореклама, но я надеюсь, что вы найдете это программное обеспечение полезным в связи с проблемой, возникшей в вашем вопросе. ; -)
Мой любимый инструмент для просмотра ASN.1 - это Peteras Gutmann's dumpasn1 . Только для командной строки, но очень гибкий и дает диагностику в случае ошибок.
Эта утилита просмотра бесплатна и выглядит довольно неплохо.