• 7187阅读
  • 2回复

qwidget: must construct a qapplication before a qpaintdevice [复制链接]

上一主题 下一主题
离线vcloud
 
只看楼主 正序阅读 楼主  发表于: 2009-05-23
— 本帖被 XChinux 执行加亮操作(2009-05-26) —
我想把一个dialog封装成dll,程序如下,没有实现任何功能,只是实验一下方法是否可行:

testdialog_global.h

#ifndef TESTDIALOG_GLOBAL_H
#define TESTDIALOG_GLOBAL_H

#include <Qt/qglobal.h>

#ifdef TESTDIALOG_LIB
# define TESTDIALOG_EXPORT Q_DECL_EXPORT
#else
# define TESTDIALOG_EXPORT Q_DECL_IMPORT
#endif

#endif // TESTDIALOG_GLOBAL_H


testdialog.h
#ifndef TESTDIALOG_H
#define TESTDIALOG_H

#include <qtgui/qdialog>

#include "testdialog_global.h"

class TESTDIALOG_EXPORT TestDialog : public QDialog
{
Q_OBJECT
public:
TestDialog();
~TestDialog();

private:

};

#endif // TESTDIALOG_H



testdialog.cpp

#include "testdialog.h"

TestDialog::TestDialog()
{

}

TestDialog::~TestDialog()
{

}
上面这些是dll中的代码
下面我又新建了一个工程

main.cpp
#include <QtGui/QApplication>
#include "..\..\TestDialog\TestDialog\testdialog.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

TestDialog *dlg=new TestDialog;
dlg->show();

return a.exec();
}


编译连接都没有错误,但是运行的时候出现:
qwidget: must construct a qapplication before a qpaintdevice
不知道是什么原因啊?
离线hcaihao

只看该作者 2楼 发表于: 2009-07-03
可以实现,用QMfcApp,但是我载入后无法卸载DLL了,估计是他的bug
离线XChinux

只看该作者 1楼 发表于: 2009-05-26
必须有QApplication实例。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个