2012-12-28 4 views
0

나는 무엇이 잘못되었는지 알아낼 수 없어서 내가 당신에게 묻기 위해 왔습니다. 아래에 정의 된 BOBSNetworkSessionManager라는 간단한 클래스를 만들었습니다. 그것은 신호와 슬롯을 사용할 수 있도록 QOBject를 상속하는 간단한 클래스이지만 대화 상자 나 이와 관련된 모든 종류의 창이 없습니다. 결국 대화 상자에 로그인하여 자격 증명을 사용하여 내가 만든 TCP 서버에 연결합니다. 이 클래스는 서버에 연결될 때 및 p.c.i로 인해 15 분 이내에 중단없이 사용되는 경우에만 제대로 실행되기 때문에 프로그램의 연결 상태를 관리하는 계층 역할을합니다. 응낙. 이러한 조건이 참이 아니면이 클래스는 창을 잠그고 강제로 새 로그인을합니다. 현재로서는 자격 증명이 통과되고 서버에 연결되어있는 것처럼 임의로 주 창을 열려고합니다. 문제는 바로 사라지는 메인 윈도우를 열 때입니다. 나는 왜 그것이 다이아 프르 어링인지 알 수 없다. 내 모든 파일을 포함 시켰습니다.differnet 클래스에서 호출 할 때 내 메인 윈도우가 자동으로 닫히는 이유는 무엇입니까?

BOBSDCNetworkSessionManager .H 헤더 파일

#ifndef BOBSDCNETWORKSESSIONMANAGER_H 
#define BOBSDCNETWORKSESSIONMANAGER_H 

#include <QObject> 
#include <QSettings> 

class BOBSDCNetworkSessionManager : public QObject 
{ 
    Q_OBJECT 
public: 
    explicit BOBSDCNetworkSessionManager(QObject *parent = 0); 

protected: 
    void destroyed(QObject *); 

signals: 

public slots: 

private: 
void readSettings(); 
void writeSettings(); 
QSettings networkSettings; 

}; 

#endif // BOBSDCNETWORKSESSIONMANAGER_H 

BOBSDCNetworkSessionManager 구현은

#include "bobsdcnetworksessionmanager.h" 
#include "bobsmainwindow.h" 

BOBSDCNetworkSessionManager::BOBSDCNetworkSessionManager(QObject *parent) : 
    QObject(parent) 
{ 
    BOBSMainWindow w; 
    w.show(); 
} 

하여 Main.cpp이 파일을 파일을 .CPP

#include "bobsdcnetworksessionmanager.h" 

#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    a.setApplicationName("Enterprise Management Suite"); 
    a.setApplicationVersion("Beta Version: 0.0.0.01"); 
    a.setOrganizationName("Enigma Web Consulting"); 
    a.setOrganizationDomain("http://www.EnigmaWebCo.com"); 

    BOBSDCNetworkSessionManager netMgr; 

    return a.exec(); 
} 

답변

1

문제는 여기에 있습니다 :

{ 
    BOBSMainWindow w; 
    w.show(); 
} 

w.show()가 차단 호출하지 않습니다. 창을 만들어 보여 주면 범위를 벗어나면 즉시 파괴됩니다. w을 멤버 변수로 선언하거나 힙에 구성해야합니다.

BOBSMainWindow *w = new BOBSMainWindow(this); 
관련 문제