当前位置: 代码迷 >> QT开发 >> QWidget: must construct a QApplication before a QWidget,该怎么解决
  详细解决方案

QWidget: must construct a QApplication before a QWidget,该怎么解决

热度:796   发布时间:2016-04-25 03:04:53.0
QWidget: must construct a QApplication before a QWidget
在vs2010生成QT动态库,其中有QDialog和QLabel等,现在vs2010新的工程中调用出现的错误?如果我的dll内类不继承QT的QDialog,就不会错误出现。网上查了下可能的原因是release和debug库混乱,可是在我这没有这个问题啊,因为不继承就不会出错,还有就是没有这句InitializeComponent();话, 但是在我的VS2010express中根本没有这个函数,我想还是对象实例问题出错了,但是究竟该怎么避免呢,求大神 谢谢O(∩_∩)O谢谢
------解决思路----------------------
必须得有QApplication才能使用其它控件。
------解决思路----------------------
引用:
Quote: 引用:

必须得有QApplication才能使用其它控件。

代码如下,我做过了QApplication的实例化
class TabDialog : public QDialog
{
    Q_OBJECT
public:
    explicit TabDialog(/*const QString &fileName, QWidget *parent = 0*/);
//explicit TabDialog(const string &fileName, QWidget *parent = 0);
~TabDialog();
};
TabDialog::TabDialog(/*const QString &fileName, QWidget *parent*/)
    //: QDialog(parent)
{
   int k=0;
    QApplication*  app = new QApplication(k, NULL);
}
然后生成的QT dll,在新的工程里调用
TabDialog* tabdialog = new TabDialog();
会在构造函数这块出错:QWidget: must construct a QApplication before a QWidget

在构造QDialog之前构造QApplication,一般放在main函数里

QWidget: must construct a QApplication before a QWidget
错误不是写的很清楚么,注意``before''
  相关解决方案