Я пытаюсь использовать QWebPage
в общей библиотеке, что означает, что у меня должно быть QApplication
, чтобы получить контекст графического интерфейса для его запуска. чтобы получить это на месте, однако, как только я запустил qApp->exec()
, Event Loop полностью блокирует и предотвращает выполнение чего-либо другого. Это связано с тем, что общая библиотека запускается в OS X, но я еще не пытаюсь использовать другие платформы.QApplication в общих проблемах цикла событий библиотеки
Я попытался добавить QTimer
, чтобы запускать каждые 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;
};
main.cpp
int main(int argc, char *argv[])
{
WebLib *webLib = new webLib(argc, argv);
svgLib->renderFileFromName("somePath");
return 0;
}
Что такое '' 'в вашем коде? Является ли это классом с переменной 'QTimer' как переменной-членом? – Tarod
Если вам нужно запустить приложение в OS X, вы не сможете переместить 'QApplication' в новый поток, насколько я знаю. Однако он мог работать и на других ОС. Вы всегда можете отменить его, запустить GUI-библиотеку с помощью 'QApplication' в основном потоке и переместить другой материал в новый поток. – thuga
@Tarod: да, 'this' - это класс, содержащий таймер в качестве переменной-члена. –