【问题标题】:QDialog modality vs QMainWindowQDialog 模式与 QMainWindow
【发布时间】:2013-06-14 10:11:09
【问题描述】:

我有一个 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();
}

【问题讨论】:

标签: qt modal-dialog qmainwindow qdialog


【解决方案1】:

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

void DiagramWindow::showCatalog()
{
    catalog *c = new catalog(this);
    c->setAttribute(Qt::WA_DeleteOnClose);
    c->show();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多