1

我有一个 QDialog 对象的 QMainWindow 对象父级。当我调用 QDialog 时exec()它保持打开状态,但我不能同时使用 QMainWindow。如果我show()改用,QDialog 会立即打开并隐藏。

我知道这与 QDialog 的模态标志有关,但它没有Qt::Modeless标志,所以我有点迷茫。

问题:如何显示 aQDialog并且仍然能够与其父级交互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();
}
4

1 回答 1

3

它关闭了,因为QDialog::show()方法是异步的,并且您的catalog对象在您的代码离开DiagramWindow::showCatalog()方法后立即被销毁。你应该像这样重写它:

void DiagramWindow::showCatalog()
{
    catalog *c = new catalog(this);
    c->setAttribute(Qt::WA_DeleteOnClose);
    c->show();
}
于 2013-06-14T10:55:51.583 回答