【发布时间】:2013-02-14 10:31:48
【问题描述】:
我有一个扩展的主窗口,其中添加了QtGui.QTabWidget。我正在创建几个从QtGui.QWidget 扩展的小部件,我可以将它们添加和删除到选项卡小部件中。
我想做的是有一个“弹出”按钮,它会导致子小部件从选项卡小部件中删除并作为它自己的独立窗口出现(以及一个“弹出”按钮来放置它回到主窗口)。与 Gtalk-in-Gmail 的想法相同。 请注意,如果我关闭主窗口,其他“选项卡”或“窗口”也应该关闭,并且我应该能够并排放置所有窗口并让它们都可见并同时更新。 (我将显示近乎实时的数据)。
我是 Qt 的新手,但如果我没记错的话,如果 Widget 没有父级,它会独立出现。这可行,但我不知道如何将窗口“弹出”回。
class TCWindow(QtGui.QMainWindow):
.
.
.
def popOutWidget(self, child):
i = self.tabHolder.indexOf(child)
if not i == -1:
self.tabCloseRequested(i)
self.widgets[i].setParent(None)
self.widgets[i].show()
我的直觉告诉我,两者之间应该仍然存在父子关系。
有没有办法保留父级但仍然让窗口独立出现,还是我误解了 Qt 的风格?
否则,在孩子中创建一个变量来保存指向主窗口的链接(如self.parentalUnit = self.parent())是一个好主意还是一个hackish/kludgy的主意?
【问题讨论】: