我正在尝试QWebPage
在共享库中使用,这意味着我必须在其中获得一个 GUI 上下文才能运行它。我已经构建了我的代码来实现它QApplication
,但是一旦我运行qApp->exec()
事件循环完全阻止并阻止其他任何事情的执行。这是在 OS X 上运行的共享库,我还没有尝试任何其他平台。
我尝试添加一个QTimer
in 以每 100 毫秒触发一次,但它永远不会被调用,我假设事件循环阻塞。我在QApplication
下面添加了我的设置代码。我假设我要么需要在线程中运行它,要么我错过了一些微不足道的事情,但我完全不确定是什么。
web_lib.cpp
WebLib::WebLib(int argc, char *argv[])
{
QApplication a(argc, argv, false);
connect(&m_eventTimer, SIGNAL(timeout()), this, SLOT(handleEvents()));
m_eventTimer.start(100);
a.exec();
}
void WebLib::renderFile(QString file
{
...some connection code that's boring here
m_page = new QWebPage;
m_page->mainFrame()->load(file);
}
void WebLib::handleEvents()
{
qApp->processEvents()
}
web_lib.h
class WEBLIBSHARED_EXPORT WebLib: public QObject
{
Q_OBJECT
public:
WebLib();
WebLib(int argc, char *argv[]);
void renderFile(QString fileName);
private slots:
void handleEvents();
private:
QWebPage *m_page;
QTimer m_eventTimer;
};
主文件
int main(int argc, char *argv[])
{
WebLib *webLib = new webLib(argc, argv);
svgLib->renderFileFromName("somePath");
return 0;
}