将QDialog嵌入QWidget的简单方法

4

我一直在寻找一种简单的方法来将 QDialog 实例嵌入到 QWidget 中,但我发现所有的方法都使用了OpenGL或者其他比较复杂的东西来实现。实际上,我找到的所有示例都试图做比仅仅嵌入 QDialog 更多的事情。所以,我想知道:是否有一种简单而干净的方法可以在 QWidget 中嵌入 QDialog

P.S.:我标记了 ,因为这是我正在使用的,但我当然会接受c++的答案 :)

这里是我需要移植的软件的屏幕截图,我需要这样一个功能。


2
QDialog 不应嵌入 QWidget 中。你有读过它的文档吗?上面写着:“对于短期任务和与用户进行简短通信,对话框是一个顶级窗口。” 为什么需要这样不寻常的任务呢?也许你应该使用另一个小部件类。 - Pavel Strakhov
@Morwenn 那个例子是将交互式的 QDialog 嵌入到 OpenGL 视口中 - 它与你所问的完全不同。这听起来像是一个 XY 问题,你能告诉我们你实际想要实现什么吗 - 或许有类似的图片可以提供? - cmannett85
1
我已根据截图更新了我的答案。 - Pavel Strakhov
2个回答

7
myDialog->setWindowFlags(Qt::Widget); // to embed dialog as a simple widget

6

您应该使用 QMdiArea

widget = QWidget()
mdiarea = QMdiArea() 
layout = QVBoxLayout(widget)
layout.addWidget(mdiarea)
d = QInputDialog()
d.setLabelText("test2")
d.setInputMode(QInputDialog.TextInput)
w = mdiarea.addSubWindow(d)
w.show()
widget.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接