Russian Qt Forum
Март 29, 2024, 05:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: statusBarMessage в WebView  (Прочитано 8722 раз)
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-не могогает
Записан
ruzik
Гость
« Ответ #1 : Февраль 16, 2011, 21:44 »

Помогите пожалуйста
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #2 : Февраль 17, 2011, 02:51 »

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

kubuntu/Win7/x64/NetBeans
ruzik
Гость
« Ответ #3 : Февраль 17, 2011, 11:03 »

Ну пока что открыл возможность VS выискивать ошибки  Смеющийся

Ошибка   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
Ставил и в функцию которая вызывается после загрузки и после конекта-одно и то же
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #4 : Февраль 17, 2011, 15:51 »

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

kubuntu/Win7/x64/NetBeans
ruzik
Гость
« Ответ #5 : Февраль 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
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #6 : Февраль 17, 2011, 19:02 »

ну а
Код
C++ (Qt)
#include <QWebFrame>
 
??
Записан

kubuntu/Win7/x64/NetBeans
ruzik
Гость
« Ответ #7 : Февраль 17, 2011, 19:17 »

Спасибо, вот где собака зарыта  Смеющийся
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #8 : Февраль 17, 2011, 19:22 »

Если бы тема не была в разделе новичков, я бы оч. удивился(
Записан

kubuntu/Win7/x64/NetBeans
ruzik
Гость
« Ответ #9 : Февраль 17, 2011, 19:25 »

Я совсем недавно в Qt, поэтому и задаю так много ламерских вопросов
Записан
ruzik
Гость
« Ответ #10 : Февраль 17, 2011, 19:31 »

Вставил, а на label'е так ничего и не увидел, он пуст, как и был(
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #11 : Февраль 17, 2011, 19:39 »

Может быть ещё чего-то забыл? Я проверял, у меня всё ок.
« Последнее редактирование: Февраль 17, 2011, 20:01 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
ruzik
Гость
« Ответ #12 : Февраль 17, 2011, 19:59 »

Я вроде все тоже сделал правильно, вставил и в функцию и после конекта, не идет
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #13 : Февраль 17, 2011, 20:01 »

Я вроде все тоже сделал правильно, вставил и в функцию и после конекта, не идет
В какую именно функцию? А лучше покажи код.
Записан

kubuntu/Win7/x64/NetBeans
ruzik
Гость
« Ответ #14 : Февраль 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)));
То есть загружается страница, устанавливается текст заголовка самого браузера, а так же нужное действие
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.11 секунд. Запросов: 22.