2013-06-14 4 views
1

QDialog 개체의 부모 인 QMainWindow 개체가 있습니다. exec()으로 QDialog를 호출 할 때 열려 있지만 QMainWindow를 동시에 사용할 수는 없습니다. 대신 show()을 사용하면 QDialog가 열리고 즉시 숨겨집니다.QDialog 형식 대 QMainWindow

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(); 
} 
+1

예제를 읽으셨습니까? https://qt-project.org/doc/qt-4.8/qdialog.html#code-examples – cmannett85

+0

@ cmannett85 나는 그들을 찾아 보았지만 아직 게시 한 것을 보지 못했습니다. 감사합니다! – Joum

답변

3

QDialog::show() 방법은 비동기하고 catalog 개체 코드 직후에 파괴되기 때문에이 닫히고 DiagramWindow::showCatalog() 방법으로 남겨 둡니다. 다음과 같이 다시 작성해야합니다.

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

, 감사합니다! – Joum