我有一个QDialog对象的QMainWindow对象父对象。当我用exec()
调用QDialog时,它会保持打开状态,但我无法同时使用QMainWindow。如果我使用show()
代替,QDialog会立即打开并隐藏。
我知道这与QDialog的模态标志有关,但它没有Qt::Modeless
标志,所以我有点迷失。
问题:如何显示QDialog
并仍然可以与其父QMainWindow
进行互动?
我的QDialog对象代码:
class catalog : public QDialog
{
Q_OBJECT
public:
explicit catalog(QWidget *parent = 0);
~catalog();
private:
Ui::catalog *ui;
};
我如何称呼它:
void DiagramWindow::showCatalog()
{
catalog catalog(this);
catalog.exec();
}
答案 0 :(得分:3)
它关闭,因为QDialog::show()
方法是异步的,您的catalog
对象在代码离开DiagramWindow::showCatalog()
方法后立即销毁。你应该像这样重写它:
void DiagramWindow::showCatalog()
{
catalog *c = new catalog(this);
c->setAttribute(Qt::WA_DeleteOnClose);
c->show();
}