我似乎无法弄清楚出了什么问题,所以我来这里问你。我在下面定义了一个名为BOBSNetworkSessionManager的简单类。它是一个继承QOBject的简单类,因此我可以使用信号和插槽,但它没有对话框或与之关联的任何窗口。它最终将调用登录对话框并使用凭据连接到我创建的tcp服务器。此类用作管理程序连接状态的层,因为它只在连接到服务器时才能正常运行,并且在15分钟内使用时不会因p.c.i而中断。合规性。如果这些条件不成立,则此类将锁定窗口并强制重新登录。截至目前,我只是试图随意打开主窗口,好像凭证已经通过,我已经连接到服务器。问题是,当我打开主窗口时,它会立即消失。我似乎无法弄清楚为什么它会变暗。我已经包含了所有文件。
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实现.cpp文件
#include "bobsdcnetworksessionmanager.h"
#include "bobsmainwindow.h"
BOBSDCNetworkSessionManager::BOBSDCNetworkSessionManager(QObject *parent) :
QObject(parent)
{
BOBSMainWindow w;
w.show();
}
Main.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();
}
答案 0 :(得分:1)
问题在于:
{
BOBSMainWindow w;
w.show();
}
w.show()
不是阻止通话。因此,您正在创建一个窗口,显示它,然后当它超出范围时立即被破坏。您应该将w
声明为成员变量或在堆上构造它:
BOBSMainWindow *w = new BOBSMainWindow(this);