Russian Qt Forum

Qt => ActiveX => Тема начата: Mish_ka от Сентябрь 21, 2014, 05:46



Название: [РЕШЕНО] Нет сигнала BeforeNavigate у WebBrowser
Отправлено: Mish_ka от Сентябрь 21, 2014, 05:46
Создаю объект
Код
C++ (Qt)
WebBrowser = new WebAxWidget();
WebBrowser->setControl(QStringLiteral("{8856F961-340A-11D0-A96B-00C04FD705A2}"));
WebBrowser->setObjectName(QStringLiteral("WebBrowser"));
WebBrowser->setFocusPolicy(Qt::StrongFocus);
WebBrowser->dynamicCall("Navigate(const QString&)", "http://yandex.ru/");
 

Соединяю, сигнал о статусе объекта управления, с функцией, включающей выключающей эти объекты управления:
Код
C++ (Qt)
connect(WebBrowser, SIGNAL(CommandStateChange(int, bool)), this, SLOT(setCommandStateChange(int, bool)));
 

Всё отлично работает, так же отлично работает и сигнал:
Код
C++ (Qt)
connect(WebBrowser, SIGNAL(TitleChange(const QString&)), this, SLOT(setTitle(const QString&)) );
 

А вот, так необходимые мне BeforeNavigate, NewWindow, NewWindow2, NewWindow3 не работают.
Код
C++ (Qt)
connect(WebBrowser, SIGNAL(BeforeNavigate(const QString &, int, const QString &, const QVariant &, const QString &, bool &)),this, SLOT(beforeNavigate(const QString &, int, const QString &, const QVariant &, const QString &, bool &)));
 

В выводе говорит:
Код
C++ (Qt)
QObject::connect: No such signal QAxWidget::BeforeNavigate(const QString &, int, const QString &, const QVariant &, const QString &, bool &)
QObject::connect:  (sender name:   'WebBrowser')
QObject::connect:  (receiver name: 'MainWindow')
 

что я делаю не так?


Название: Re: Нет сигнала BeforeNavigate у WebBrowser
Отправлено: torwig от Сентябрь 21, 2014, 11:30
Если говорит, что нет такого сигнала, так возможно его действительно нет? В секции signals класса WebAxWidget они есть? Может порядок аргументов не такой? .h-файл приведите.


Название: Re: Нет сигнала BeforeNavigate у WebBrowser
Отправлено: Mish_ka от Сентябрь 22, 2014, 04:47
Это из примера по работе с ActiveX в Qt ( h файл вот (http://qt-project.org/doc/qt-4.8/activeqt-webbrowser-webaxwidget-h.html) )

Дело в том, что у объекта есть такие сигналы, вот они: http://msdn.microsoft.com/en-us/library/aa752085(v=vs.85).aspx (http://msdn.microsoft.com/en-us/library/aa752085(v=vs.85).aspx)

А так в секции сигналов, сигналов CommandStateChange и TitleChange нет, а они работают...


Название: Re: Нет сигнала BeforeNavigate у WebBrowser
Отправлено: Johnik от Сентябрь 22, 2014, 06:19
Для объекта выполните:
Код:
QString QAxBase::generateDocumentation()
с обработкой некоторых событий COM объектов в Qt могут быть трудности


Название: Re: Нет сигнала BeforeNavigate у WebBrowser
Отправлено: Mish_ka от Сентябрь 22, 2014, 09:06
Спасибо большое!

я делал так:
Код
C++ (Qt)
BeforeNavigate(const QString &, int, const QString &, const QVariant &, const QString &, bool &)
 

а в документации сгенирированной сказано надо так:
Код
C++ (Qt)
BeforeNavigate(QString, int, QString, QVariant&, QString, bool&)
 

и всё заработало )))