qApp未设置,我不知道为什么

时间:2012-05-07 18:04:43

标签: c++ qt visual-studio-2008 qt4

我的Qt应用程序遇到了一些问题。看起来我的qApp未初始化,我不明白为什么。下面是一个代码片段,用于演示此问题。

class F3DApp : public QEnsQtApp
{
    Q_OBJECT
.
.
}

class  QEnsQtApp : public QApplication
{
    Q_OBJECT
.
.
}


F3DApp::F3DApp(int& argc, char** argv)
:   QEnsQtApp(argc, argv),

QEnsQtApp::QEnsQtApp( int &argc, char **argv)
      :QApplication(argc, argv)

基于这种结构,似乎我在构造F3DApp时应该设置我的qApp(在qapplication.h中定义,static_cast(QCoreApplication :: instance())。但是,它不是如下所示:

int main (int argc, char ** argv, char* envp[])
{ 
    F3DApp lapp(argc, argv);
    F3DApp* app = &lapp; 
    QApplication *a = dynamic_cast<QApplication *> (app); // Good
    QApplication *b = qApp;  // Nothing?
}

这实际上是在我的QPixmap中引起问题。我得到了一个

  

qFatal(“QPixmap:必须在之前构建QApplication   的QPaintDevice“);

我已经用QPixmap(在qt_pixmap_thread_test()内部)解决了这个问题,并且在我的qApp实际初始化之前看起来并不是我静态构建一个,这似乎是常见的问题。以下是我制作SplashScreen的方法:

SplashScreen::SplashScreen(QString guiVersion, QString guiVersionDate)
:   QSplashScreen(QPixmap(":/images/splash.png")),
    m_guiVersion(guiVersion),
    m_guiVersionDate(guiVersionDate)
{ 
}

然后从主,我做了我的F3DApp:

SplashScreen* splash = new SplashScreen(F3DApp::getVersionInfo(), 
   F3DApp::getAppDate());

当F3DApp类:public QApplication时,这曾经很好用。我可以简单地将所有F3DApp功能转移到QEnsQtApp作为解决方法,但我不喜欢地毯下的彻底问题因为我无知。我宁可不要无知。

0 个答案:

没有答案