Hi,

I am using a tabwidget and on each tab I am creating a listview with a 
standard model. My question is how do I make sure when I delete the tabs 
that everything gets deleted, including the model. As far as I understand 
if you delete the parent widget the children will also be deleted.

Below you will find a simplified version of what I am creating. Should I 
"manually" deleting the model?

Thankful for all comments and feedback!

BR,
Johan

import sys
from PySide2 import QtGui, QtCore, QtWidgets
from maya import OpenMayaUI as omui
from shiboken2 import wrapInstance
from functools import partial


class TabWidget(QtWidgets.QWidget):
    
    def __init__(self, parent=None):
        super(TabWidget, self).__init__(parent) 

        self.setWindowFlags(QtCore.Qt.Tool)
        self.setGeometry(50, 200, 300, 300)
        self.setWindowTitle('Tabwidget')

        vbox = QtWidgets.QVBoxLayout(self)

        self.tab_widget = QtWidgets.QTabWidget()
        vbox.addWidget(self.tab_widget)

        label_list = ['A', 'B', 'C']

        # add tabs
        add_tabs_button = QtWidgets.QPushButton('Add Tabs')
        add_tabs_button.clicked.connect(partial(self.add_tabs, label_list))
        vbox.addWidget(add_tabs_button)

        # remove tabs
        remove_tabs_button = QtWidgets.QPushButton('Remove Tabs')
        remove_tabs_button.clicked.connect(self.remove_tabs)
        vbox.addWidget(remove_tabs_button)

    def remove_tabs(self):
        #self.tab_widget.clear()
        for i in range(self.tab_widget.count()):
            #print self.tab_widget.removeTab(0)
            self.tab_widget.widget(i).deleteLater()

    def add_tabs(self, label_list):

        for label in label_list:

            widget = QtWidgets.QWidget()
            self.tab_widget.addTab(widget, label)
            vbox = QtWidgets.QVBoxLayout(widget)

            model = QtGui.QStandardItemModel()

            for i in range(5):
                model.appendRow(QtGui.QStandardItem('{} {}'.format(label, 
i)))

            list_view = QtWidgets.QListView()
            list_view.setModel(model)
            vbox.addWidget(list_view)


def show():
    mayaMainWindow = wrapInstance(long(omui.MQtUtil.mainWindow()), 
QtWidgets.QWidget)     
    win = TabWidget(parent=mayaMainWindow)
    win.show()
    return win


-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/c75a5e80-6f62-4b91-b38b-d8b1dd8c8c0a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to