Название: QWebView Отправлено: Kauc от Апрель 07, 2012, 22:57 Уважаемые форумчане!
В связи с написанием бакалаврской работы возникла необходимость использовать элемент QWebView в динамической библиотеки (дада при обращении к моей dllке mydll.dll она загружает в себя пару страниц и обрабатывает их). Вся программа строится на использовании сигнала loadFinished(), но как можно установить связь между ним и необходимой мне функцией? Пример того, что я сделал: есть класс Код: class Counter : public QObject в главной функции библиотеки установлена связь: Код: extern "C" __declspec(dllexport) char * getArticles() Код: void Counter::setValue(int value) Пробовал таким образом связывать сигналы startLoad() и loadProgress(). Первый сработал и второй выдал 10 процентов. Так как можно дождаться полной загрузки страницы и создать слот-функцию обработчик этого события? Название: Re: QWebView Отправлено: mutineer от Апрель 07, 2012, 23:03 Код
твой QWebView уничтожается при выходе из функции же да и каунтер тоже Название: Re: QWebView Отправлено: Kauc от Апрель 07, 2012, 23:20 Это да, но как можно создать глобальный QWebView, если его объявление возможно только после объявления объекта QApplication:
Код: int argc = 0;char* argv[1]; Название: Re: QWebView Отправлено: mutineer от Апрель 07, 2012, 23:23 Да очень просто - QApplication ты же создаешь в хипе, а не на стеке. Вот и те два объекта создавай в хипе
Название: Re: QWebView Отправлено: Kauc от Апрель 07, 2012, 23:29 Вы имеете ввиду делать указатели?) Я не особо разбираюсь в чем отличие использования хипа от стека ):
Название: Re: QWebView Отправлено: mutineer от Апрель 07, 2012, 23:32 это прискорбно, что ты решил писать бакалаврскую (или ее кусок) на языке, даже базы которого не знаешь...
да, я имею в виду "указатели" Название: Re: QWebView Отправлено: Kauc от Апрель 07, 2012, 23:36 С указателями я кое как разбираюсь. Но в данном случае это невозможно, т.к. программа отладчик (написанная на Delphi) ругается непонятно почему при использовании указателей в библиотеке. Есть ли другой вариант?
Название: Re: QWebView Отправлено: mutineer от Апрель 07, 2012, 23:39 Есть - не пытаться смешивать Delphi и Qt/C++ без достаточного знания последнего. Но это имхо
Еще есть вариант рассказать как же оно ругается. А на pApp оно не ругается? кстати, не вижу где он объявлен Название: Re: QWebView Отправлено: Kauc от Апрель 07, 2012, 23:58 Программа-отладчик:
Код: unit Unit1; при появлении строк Код: QWebView *view2=new QWebView; выдает ошибку: Invalid floating point operation И да, pApp объявлен ранее перед главной функцией: Код: QApplication* pApp = NULL; Название: Re: QWebView Отправлено: mutineer от Апрель 08, 2012, 00:09 что-то я не вкуриваю в смысл сего кода:
Код: P := Test(GetProcAddress(H, 'getArticles')); P без скобок во второй строке - это типа вызов функции? З.Ы. всегда бесила эта неопределенность делфяшников - не могут решить никак в каком же регистре имя переменной писать)) Название: Re: QWebView Отправлено: Kauc от Апрель 08, 2012, 00:11 Код: P := Test(GetProcAddress(H, 'getArticles')); Пусть останется: Код: P := Test(GetProcAddress(H, 'getArticles')); Да, Р-это вызов функции. Название: Re: QWebView Отправлено: mutineer от Апрель 08, 2012, 00:14 Код: Memo1.Text:=Р; это присваивание результата вызова функции по указателю P? меня отсутствие скобок смущает Название: Re: QWebView Отправлено: Kauc от Апрель 08, 2012, 00:19 Наличие/удаление скобок P() или P ни к чему не привело.
Название: Re: QWebView Отправлено: V1KT0P от Апрель 08, 2012, 00:20 Наличие/удаление скобок P() или P ни к чему не привело. Так а отладчик что говорит?Название: Re: QWebView Отправлено: mutineer от Апрель 08, 2012, 00:24 Наличие/удаление скобок P() или P ни к чему не привело. Блин, ты и в делфи не разбираешься, чтоли? я спрашиваю - это вызов функции так выглядит (без скобок записывается, если без параметров функция)? а ты мне второй раз уже непонятно что отвечаешь Название: Re: QWebView Отправлено: Kauc от Апрель 08, 2012, 00:50 mutineer:Да, вы верно решили - это вызов функции. Если у функции нет параметров, то и скобки не нужны.
V1KT0P: ничего, я неверно назвал эту программу отладчиком. Это просто тестирующая программа. Ее ошибку я уже писал: Invalid floating point operation при использовании указателей в dllке. Название: Re: QWebView Отправлено: V1KT0P от Апрель 08, 2012, 00:57 V1KT0P: ничего, я неверно назвал эту программу отладчиком. Это просто тестирующая программа. Ее ошибку я уже писал: Invalid floating point operation при использовании указателей в dllке. Ну так ты запускал под отладчиком? Куда указывает бэктрейс?Название: Re: QWebView Отправлено: kamre от Апрель 08, 2012, 01:07 А что в самом Delphi нет аналога QWebView? Зачем скрещивать ужа с ежом?
Название: Re: QWebView Отправлено: Kauc от Апрель 08, 2012, 01:19 kamre: Изначально не планировалось писать библиотеку, это потребовалось, когда уже был написан 1к кода ):
V1KT0P: Под DELPHI я не знаю как использовать отладчик для библиотеки, написанной в qt. Если же использовать программу-тестер, написанную на qt, то она выдает отдельные ошибки moc компилятора, достойные отдельной темы. И заметьте, ничего этого не было бы, если изначально обойтись без указателей: Код: QWebView view; Код: QWebView *view=new QWebView; Название: Re: QWebView Отправлено: mutineer от Апрель 08, 2012, 01:28 kamre: Изначально не планировалось писать библиотеку, это потребовалось, когда уже был написан 1к кода ): В этой фразе нет ни одной причины НЕиспользовать делфяшные компоненты, вместо Qt Цитировать И заметьте, ничего этого не было бы, если изначально обойтись без указателей Заметь, что создание QWebView на стеке локально не будет работать в этом случаеНазвание: Re: QWebView Отправлено: V1KT0P от Апрель 08, 2012, 01:35 V1KT0P: Под DELPHI я не знаю как использовать отладчик для библиотеки, написанной в qt. Если же использовать программу-тестер, написанную на qt, то она выдает отдельные ошибки moc компилятора, достойные отдельной темы. И заметьте, ничего этого не было бы, если изначально обойтись без указателей: Ну раз такое дело, то попробуй:Код: QWebView view; Код: QWebView *view=new QWebView; Код: static QWebView view; И да если уже 1к на дельфи написан, то может и веб на нем писать? Если 1к на кьют, то может и остальное лучше бы на кьюте? Название: Re: QWebView Отправлено: Kauc от Апрель 08, 2012, 01:46 Цитировать Цитировать kamre: Изначально не планировалось писать библиотеку, это потребовалось, когда уже был написан 1к кода ): В этой фразе нет ни одной причины НЕиспользовать делфяшные компоненты, вместо Qt Вы предлагаете все заново переписывать на Delphi? Цитировать Ну раз такое дело, то попробуй: Код: static QWebView view; Первое, что пришло в голову после ответа в этой теме о необходимости глобального объявления. Но Delphi все-равно выдает ошибку Invalid floating point operation на строку Код: static QWebView view; Название: Re: QWebView Отправлено: Kauc от Апрель 08, 2012, 01:58 Аха, только что заметил, что если объявлять
Код: QWebView *view=new QWebView; Код: static QWebView view; Название: Re: QWebView Отправлено: mutineer от Апрель 08, 2012, 12:24 Цитировать Цитировать kamre: Изначально не планировалось писать библиотеку, это потребовалось, когда уже был написан 1к кода ): В этой фразе нет ни одной причины НЕиспользовать делфяшные компоненты, вместо Qt Вы предлагаете все заново переписывать на Delphi? Чувак, ты очень странный... очень... ты предлагаешь мне мысли твои прочитать? Основной проект у тебя на делфи? или не на делфи? или зачем вообще все заново переписывать на делфи? где в твоем сообщении "Изначально не планировалось писать библиотеку, это потребовалось, когда уже был написан 1к кода ):" хоть слово про делфи? |