Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ruzik от Февраль 15, 2011, 17:15



Название: statusBarMessage в WebView
Отправлено: ruzik от Февраль 15, 2011, 17:15
Здравствуйте, нашел в ассистенте сигнал statusBarMessage для объекта QWebView, как я понимаю, этот сигнал делает следующее:
при наведении на ссылку и тп, эта функция передает её адрес
Попытался её использовать, объявил слот
   void setStatusBarMainLabel(QString & text);
(StatusBarMainLabel- это объект класса QLabel- простая надпись)
Расписал этот слот:
void MyBr::setStatusBarMainLabel(QString & text)
{
   StatusBarMainLabel->setText(text);
}
Соединил:
connect(webView, SIGNAL(statusBarMessage (QString)) , this , SLOT(setStatusBarMainLabel(QString)));
Ошибок не выскакивает, все компилируется нормально, я проверял самое событие срабатывает, то есть сигнал вызывает слот, но текст не устанавливается, пробовал объявить указатель и через него, пробовал с const-не могогает


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 16, 2011, 21:44
Помогите пожалуйста


Название: Re: statusBarMessage в WebView
Отправлено: serg_hd от Февраль 17, 2011, 02:51
Не совсем так. Ты попробуй, например, в слот окончания загрузки страницы (хотя можно и сразу после твоего connect()'a) добавить
Код
C++ (Qt)
webView.page()->mainFrame()->evaluateJavaScript("window.status = 'mytext!!!!'");
 
Увидишь результат на label'е и откроешь заодно для себя возможности яваскрипта.


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 17, 2011, 11:03
Ну пока что открыл возможность VS выискивать ошибки  ;D

Ошибка   1   error C2228: выражение слева от ".page" должно представлять класс, структуру или объединение   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   86
Ошибка   2   error C2227: выражение слева от "->mainFrame" должно указывать на тип класса, структуры или объединения либо на универсальный тип   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   86
Ошибка   3   error C2227: выражение слева от "->evaluateJavaScript" должно указывать на тип класса, структуры или объединения либо на универсальный тип   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   86
Пробовал заменить .page на ->page
Ставил и в функцию которая вызывается после загрузки и после конекта-одно и то же


Название: Re: statusBarMessage в WebView
Отправлено: serg_hd от Февраль 17, 2011, 15:51
Следуя из того, что webview у тебя создана в куче и ты обращается к ней через указатель, код, конечно, был тобою изменён на:
Код
C++ (Qt)
webView->page()->mainFrame()->evaluateJavaScript("window.status = 'mytext!!!!'");
 
?


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 17, 2011, 18:48
Я же написал выше, что
Цитировать
Пробовал заменить .page на ->page
Вот ошибки, которые выдает
Ошибка   1   error C2027: использование неопределенного типа "QWebFrame"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   86
Ошибка   2   error C2227: выражение слева от "->evaluateJavaScript" должно указывать на тип класса, структуры или объединения либо на универсальный тип   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   86


Название: Re: statusBarMessage в WebView
Отправлено: serg_hd от Февраль 17, 2011, 19:02
ну а
Код
C++ (Qt)
#include <QWebFrame>
 
??


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 17, 2011, 19:17
Спасибо, вот где собака зарыта  ;D


Название: Re: statusBarMessage в WebView
Отправлено: serg_hd от Февраль 17, 2011, 19:22
Если бы тема не была в разделе новичков, я бы оч. удивился(


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 17, 2011, 19:25
Я совсем недавно в Qt, поэтому и задаю так много ламерских вопросов


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 17, 2011, 19:31
Вставил, а на label'е так ничего и не увидел, он пуст, как и был(


Название: Re: statusBarMessage в WebView
Отправлено: serg_hd от Февраль 17, 2011, 19:39
Может быть ещё чего-то забыл? Я проверял, у меня всё ок.


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 17, 2011, 19:59
Я вроде все тоже сделал правильно, вставил и в функцию и после конекта, не идет


Название: Re: statusBarMessage в WebView
Отправлено: serg_hd от Февраль 17, 2011, 20:01
Я вроде все тоже сделал правильно, вставил и в функцию и после конекта, не идет
В какую именно функцию? А лучше покажи код.


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 17, 2011, 21:09
Точнее это не функция, а слот
void MyBr::setTitle(bool a)
{
   this->setWindowTitle(webView->title());
   webView->page()->mainFrame()->evaluateJavaScript("window.status = 'mytext!!!!'");
}
А в конструкторе    connect(webView , SIGNAL(loadFinished(bool)), this, SLOT(setTitle(bool)));
То есть загружается страница, устанавливается текст заголовка самого браузера, а так же нужное действие


Название: Re: statusBarMessage в WebView
Отправлено: serg_hd от Февраль 17, 2011, 23:37
сравни с этими древними исходниками


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 18, 2011, 12:54
В вашем проекте, у меня тоже при наведении на ссылку ничего не отображается и не появляется
Значит дело не в коде


Название: Re: statusBarMessage в WebView
Отправлено: serg_hd от Февраль 18, 2011, 14:06
А при чём здесь "ничего не отображается и не появляется"? Там же в слоте через qDebug() вывод текста! В терминале этот текст должен быть. Или и его нет?


Название: Re: statusBarMessage в WebView
Отправлено: ruzik от Февраль 18, 2011, 14:16
А все извините, неуглядел