我有一个QMainWindow对象的父对象到一个QDialog对象。当我用QDialog调用exec()时,它保持打开状态,但不能同时使用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();
}发布于 2013-06-14 10:55:51
它会关闭,因为QDialog::show()方法是异步的,在代码离开DiagramWindow::showCatalog()方法之后,您的catalog对象就被销毁了。你应该这样重写它:
void DiagramWindow::showCatalog()
{
catalog *c = new catalog(this);
c->setAttribute(Qt::WA_DeleteOnClose);
c->show();
}https://stackoverflow.com/questions/17106122
复制相似问题