[Python] How to pop out a separate window from a tabWidget in PySide Qt

Discussão em 'Python' iniciado por Stack, Julho 4, 2025.

  1. Stack

    Stack Membro Participativo

    I have an extended main window with a QtGui.QTabWidget added to it. I am creating several widgets extended from QtGui.QWidget which I can add and remove to the tab widget.

    What I would like to do is have a "pop-out" button that causes the child widget to be removed from the tab widget and come up as it's own independent window (and a "pop-in" button to put it back into the main window). The same sort of idea as Gtalk-in-Gmail has. Note that if I close the main window, the other "tabs" or "windows" should also close, and I should be able to put all the windows side-by-side and have them all visible and updating at the same time. (I will be displaying near-realtime data).

    I am new to Qt, but if I'm not mistaken, if a Widget has no parent it comes up independently. This works, but I then have no idea how I could "pop" the window back in.

    class TCWindow(QtGui.QMainWindow):
    .
    .
    .
    def popOutWidget(self, child):
    i = self.tabHolder.indexOf(child)
    if not i == -1:
    self.tabCloseRequested(i)
    self.widgets.setParent(None)
    self.widgets.show()


    My gut says that there should still be a parent/child relationship between the two.

    Is there a way to keep the parent but still have the window come up independently, or am I misunderstanding Qt's style?

    Otherwise, would creating a variable in the child to hold a link to the main window (like self.parentalUnit = self.parent()) be a good idea or a hackish/kludgy idea?

    Continue reading...

Compartilhe esta Página