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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: setHtml Qt 4.7.0  (Прочитано 4371 раз)
Cccr
Гость
« : Октябрь 15, 2010, 21:22 »

Привет всем!
Извините если поднимаю вопрос повторно, не нашел нужный тред.

udp:
ЕСТЬ КОД:

#include "formextractor.h"
#include <QWebElement>
FormExtractor::FormExtractor(QWidget *parent, Qt::WFlags flags)
    : QWidget(parent, flags)
{
    ui.setupUi(this);
    ui.webView->setUrl(QUrl("qrc:/form.html"));

    connect(ui.webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
            this, SLOT(populateJavaScriptWindowObject()));
    resize(300, 300);
}

FormExtractor::~FormExtractor()
{
}

void FormExtractor::submit()
{
    exit(1);
}

void FormExtractor::populateJavaScriptWindowObject()
{
    ui.webView->page()->mainFrame()->addToJavaScriptWindowObject("formExtractor", this);
}

/form.html содержит

Method 1 НЕ ВЫЗЫВАЕТ СЛОТ
<FORM>
<INPUT TYPE="button" VALUE="Click Here to Write to Me"
onClick="FormExtractor.submit()">
</FORM>

Method 2
<form onsubmit="formExtractor.submit()"><input type="submit" value="Submit"></form>

первый случай слот submit не вызывает, второй работает нормально.

Скажите плз в чем причина, почему в первом случае слот не вызывается?

ps: код - это пример, чтобы пояснить проблему.
« Последнее редактирование: Октябрь 15, 2010, 22:29 от Cccr » Записан
marbius
Гость
« Ответ #1 : Октябрь 16, 2010, 03:53 »

void FormExtractor::populateJavaScriptWindowObject()
{
    ui.webView->page()->mainFrame()->addToJavaScriptWindowObject("formExtractor", this);
}

/form.html содержит

Method 1 НЕ ВЫЗЫВАЕТ СЛОТ
<FORM>
<INPUT TYPE="button" VALUE="Click Here to Write to Me"
onClick="FormExtractor.submit()">
</FORM>

Method 2
<form onsubmit="formExtractor.submit()"><input type="submit" value="Submit"></form>


formExtractor и FormExtractor - разные объекты
Записан
Cccr
Гость
« Ответ #2 : Октябрь 16, 2010, 08:33 »

код поменял устанавливаю рабочий код через ui.webView->setUrl(QUrl("qrc:/form.html"));
все работает СПАСИБО за то что заметили ошибку.

но вот проблема остается с setHtml

QString Html = "<FORM><INPUT TYPE=\"button\" VALUE=\"Click Here\" onClick=\"formExtractor.submit()\"></FORM>";
   
ui.webView->setHtml(Html);

и слот не вызывается.

Записан
marbius
Гость
« Ответ #3 : Октябрь 16, 2010, 10:23 »

Вызывайте QWebView::setHtml после того, как присоединили сигнал javaScriptWindowObjectCleared.

Делайте так:
Код
C++ (Qt)
connect(ui->webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),this, SLOT(populateJavaScriptWindowObject()));
 
QString Html = "<FORM><INPUT TYPE='button' VALUE='Click Here' onClick='formExtractor.submit()'></FORM>";
ui->webView->setHtml(Html);
 

А не так:
Код
C++ (Qt)
QString Html = "<FORM><INPUT TYPE='button' VALUE='Click Here' onClick='formExtractor.submit()'></FORM>";
ui->webView->setHtml(Html);
 
connect(ui->webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),this, SLOT(populateJavaScriptWindowObject()));
 

Должно заработать.
Записан
Cccr
Гость
« Ответ #4 : Октябрь 16, 2010, 11:11 »

СПАСИБО ОГРОМНОЕ!))

но все таки странно что в новой версии (4.7.0) так надо делать, в старых работало и так=)))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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