Why can't ie11 load the DLL generated by the qt-5.6/activeqt-hierarchy-example?
-
Hmm, looked at your code, C++ seems ok, but the Javascript window resizing stuff I don't know, I'm not that good with Javascript.
If you put back that alert, does it work and show the correct message (width,height)?
If so, then perhaps you need some kind of update/refresh of the window at the end, so make the resizing visible.
@hskoglund I put back that alert, It shows the correct width and height.
How do I reset width and height styles of osgActiveGLQT in javascript?
<object ID ="osgActiveGLQT" HSPACE="0" VSPACE="0" WIDTH="900" HEIGHT="600" CLASSID="CLSID:B0545661-8607-43BA-A1C2-B43C0A93D976"> <PARAM NAME="WindowSize" VALUE ="900,600" /> [Object not available! Did you forget to build and register the server?] </object>
-
Don't think it's possible to do in Javascript, but what I do know, is that it's pretty easy to change width and height of a QWidget (e.g. setGeometry(), same as in osgActiveGLQT's constructor)
So, easiest would be to implement 2 new slots in your C++ code for the osgActiveGLQT object, for example setHeight() and setWidth().
Then you could call those 2 functions from Javascript, in the same way you call setTimeout() now. -
Don't think it's possible to do in Javascript, but what I do know, is that it's pretty easy to change width and height of a QWidget (e.g. setGeometry(), same as in osgActiveGLQT's constructor)
So, easiest would be to implement 2 new slots in your C++ code for the osgActiveGLQT object, for example setHeight() and setWidth().
Then you could call those 2 functions from Javascript, in the same way you call setTimeout() now.@hskoglund the following code successfully changes window size in javascript.
<script language="javascript"> function ResetWidget() { var e1 = document.getElementById("ParentWidget"); e1.style.width = "1000px"; e1.style.height = "800px"; } </script> <object ID="ParentWidget" WIDTH="900" HEIGHT="600" CLASSID="CLSID:d574a747-8016-46db-a07c-b2b4854ee75c" CODEBASE="http://www.qt-project.org/demos/hierarchy.cab"> [Object not available! Did you forget to build and register the server?] </object><br /> <form> <input type="button" value="ResetWidget" onClick="ResetWidget()" /> </form>
-
Don't think it's possible to do in Javascript, but what I do know, is that it's pretty easy to change width and height of a QWidget (e.g. setGeometry(), same as in osgActiveGLQT's constructor)
So, easiest would be to implement 2 new slots in your C++ code for the osgActiveGLQT object, for example setHeight() and setWidth().
Then you could call those 2 functions from Javascript, in the same way you call setTimeout() now.Why is the activeQT window size wrong when i set window size injavascript?
The following screenshots and code
link text<object ID ="osgActiveGLQT" WIDTH = "900" HEIGHT = "600" CLASSID="CLSID:B0545661-8607-43BA-A1C2-B43C0A93D976"> [Object not available! Did you forget to build and register the server?] </object>
#ifndef ActiveQTOSGWidget_H #define ActiveQTOSGWidget_H #include <iostream> #include <QtWidgets/QWidget> #include <QtWidgets/QLayout> #include <QtWidgets/QApplication> #include <QtWidgets/QLCDNumber> #include <QTimer> #include <QMessageBox> #include <osgViewer/CompositeViewer> #include <osgViewer/ViewerEventHandlers> #include <osgGA/MultiTouchTrackballManipulator> #include <osgDB/ReadFile> #include <osgQt/GraphicsWindowQt> #include <osg/PolygonOffset> class ActiveQTOSGWidget : public QWidget { public: ActiveQTOSGWidget(QWidget *parent = 0); public: virtual void paintEvent(QPaintEvent* event) { // Update the camera QPainter paint(this); QPen pen; pen.setColor(QColor(255, 0, 0)); QBrush brush(QColor(255, 0, 0)); paint.setPen(pen); paint.setBrush(brush); int ss = width(); paint.drawRect(0, 0, width(), height()); } }; #endif // OSGVIEW_H
#ifndef OSGACTIVEGLQT_H #define OSGACTIVEGLQT_H #include <iostream> #include <QtWidgets/QWidget> #include <ActiveQt/QAxBindable> #include <QtWidgets/QLayout> #include <QtWidgets/QApplication> #include <QtWidgets/QLCDNumber> #include <QTimer> #include <QApplication> #include <QDesktopWidget> #include <QMessageBox> #include <QPushButton> #include "ui_osgactiveglqt.h" #include "ActiveQTOSGWidget.h" class osgActiveGLQT : public QWidget,public QAxBindable { Q_OBJECT public: osgActiveGLQT(QWidget *parent = 0); private: Ui::osgActiveGLQTClass ui; }; #endif // OSGACTIVEGLQT_H
-
Nice! Resizing is most likely is part of the ActiveX specification, and ActiveQt being of good quality supports it.
Is... there? Why is the activeQT window's size less than QT Createor window's size when I set the size of 'WIDTH' and 'HEIGHT' Properties of ActiveQT Object in javascript?
The following screenshots and code
link text<object ID ="osgActiveGLQT" WIDTH = "900" HEIGHT = "600" CLASSID="CLSID:B0545661-8607-43BA-A1C2-B43C0A93D976"> [Object not available! Did you forget to build and register the server?] </object>
#ifndef ActiveQTOSGWidget_H #define ActiveQTOSGWidget_H #include <iostream> #include <QtWidgets/QWidget> #include <QtWidgets/QLayout> #include <QtWidgets/QApplication> #include <QtWidgets/QLCDNumber> #include <QTimer> #include <QMessageBox> #include <osgViewer/CompositeViewer> #include <osgViewer/ViewerEventHandlers> #include <osgGA/MultiTouchTrackballManipulator> #include <osgDB/ReadFile> #include <osgQt/GraphicsWindowQt> #include <osg/PolygonOffset> class ActiveQTOSGWidget : public QWidget { public: ActiveQTOSGWidget(QWidget *parent = 0); public: virtual void paintEvent(QPaintEvent* event) { // Update the camera QPainter paint(this); QPen pen; pen.setColor(QColor(255, 0, 0)); QBrush brush(QColor(255, 0, 0)); paint.setPen(pen); paint.setBrush(brush); int ss = width(); paint.drawRect(0, 0, width(), height()); } }; #endif // OSGVIEW_H
#ifndef OSGACTIVEGLQT_H #define OSGACTIVEGLQT_H #include <iostream> #include <QtWidgets/QWidget> #include <ActiveQt/QAxBindable> #include <QtWidgets/QLayout> #include <QtWidgets/QApplication> #include <QtWidgets/QLCDNumber> #include <QTimer> #include <QApplication> #include <QDesktopWidget> #include <QMessageBox> #include <QPushButton> #include "ui_osgactiveglqt.h" #include "ActiveQTOSGWidget.h" class osgActiveGLQT : public QWidget,public QAxBindable { Q_OBJECT public: osgActiveGLQT(QWidget *parent = 0); private: Ui::osgActiveGLQTClass ui; }; #endif // OSGACTIVEGLQT_H
-
Hmm it works for me, I tried with the hierarchyax sample and when I set WIDTH and HEIGHT in test.html:
.. <p> This widget can have many children! </p> <object ID="ParentWidget" WIDTH = "900" HEIGHT = "600" CLASSID="CLSID:d574a747-8016-46db-a07c-b2b4854ee75c" [Object not available! Did you forget to build and register the server?] </object><br /> ...
the ActiveQt window is set to 900x600:
-
Hmm it works for me, I tried with the hierarchyax sample and when I set WIDTH and HEIGHT in test.html:
.. <p> This widget can have many children! </p> <object ID="ParentWidget" WIDTH = "900" HEIGHT = "600" CLASSID="CLSID:d574a747-8016-46db-a07c-b2b4854ee75c" [Object not available! Did you forget to build and register the server?] </object><br /> ...
the ActiveQt window is set to 900x600:
@hskoglund
oh~~ How to get the widget window from HWND in Qt5?The following QT4 code
QWidget *myWidget; HWND hwnd; myWidget=QWidget::find(hwnd);
-
In Qt5 I think you have to step through all the QWidgets and look for a HWND match, like this:
QWidget *myWidget = nullptr; HWND hwnd; for (auto w : findChildren<QWidget*>()) if (hwnd == (HWND) w->winId()) myWidget = w;
-
Thank you very much.
How does the following lambda qt5 code translate into a normal slot for the singleshot in QT4?
QTimer::singleShot(value * 1000,[this] { signalFromQt("Hello no.:" + QString::number(++i)); });
-
@mirro
Qt4 does not support lambdas as far as i know as it must use the new connect syntax that came in Qt5.
So in Qt4 you have to use a normal slot for the singleshot. -
How does the following lambda qt5 code translate into a normal slot for the singleshot in QT4?
[this] { signalFromQt("Hello no.:" + QString::number(++i)); } -
In Qt5 I think you have to step through all the QWidgets and look for a HWND match, like this:
QWidget *myWidget = nullptr; HWND hwnd; for (auto w : findChildren<QWidget*>()) if (hwnd == (HWND) w->winId()) myWidget = w;
@hskoglund
Start with C++ in Qt, emit a signal from there into IE11,Can it be implemented in QT4?QTimer::singleShot(value * 1000,[this] { signalFromQt("Hello no.:" + QString::number(++i)); });
-
@hskoglund
Start with C++ in Qt, emit a signal from there into IE11,Can it be implemented in QT4?QTimer::singleShot(value * 1000,[this] { signalFromQt("Hello no.:" + QString::number(++i)); });