Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Why can't ie11 load the DLL generated by the qt-5.6/activeqt-hierarchy-example?
Forum Updated to NodeBB v4.3 + New Features

Why can't ie11 load the DLL generated by the qt-5.6/activeqt-hierarchy-example?

Scheduled Pinned Locked Moved Solved General and Desktop
27 Posts 3 Posters 1.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • hskoglundH hskoglund

    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.

    M Offline
    M Offline
    mirro
    wrote on last edited by mirro
    #13

    @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>
    
    1 Reply Last reply
    0
    • hskoglundH Offline
      hskoglundH Offline
      hskoglund
      wrote on last edited by
      #14

      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.

      M 2 Replies Last reply
      0
      • hskoglundH hskoglund

        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.

        M Offline
        M Offline
        mirro
        wrote on last edited by
        #15

        @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>
        
        1 Reply Last reply
        0
        • hskoglundH hskoglund

          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.

          M Offline
          M Offline
          mirro
          wrote on last edited by mirro
          #16

          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
          1 Reply Last reply
          0
          • hskoglundH Offline
            hskoglundH Offline
            hskoglund
            wrote on last edited by
            #17

            Nice! Resizing is most likely is part of the ActiveX specification, and ActiveQt being of good quality supports it.

            M 1 Reply Last reply
            0
            • hskoglundH hskoglund

              Nice! Resizing is most likely is part of the ActiveX specification, and ActiveQt being of good quality supports it.

              M Offline
              M Offline
              mirro
              wrote on last edited by mirro
              #18

              @hskoglund

              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
              1 Reply Last reply
              0
              • hskoglundH Offline
                hskoglundH Offline
                hskoglund
                wrote on last edited by
                #19

                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:
                Screenshot 2020-06-04 at 11.43.31.png

                M 1 Reply Last reply
                0
                • hskoglundH hskoglund

                  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:
                  Screenshot 2020-06-04 at 11.43.31.png

                  M Offline
                  M Offline
                  mirro
                  wrote on last edited by mirro
                  #20

                  @hskoglund
                  oh~~ How to get the widget window from HWND in Qt5?

                  The following QT4 code

                  QWidget *myWidget;
                  HWND hwnd;
                  myWidget=QWidget::find(hwnd);
                  
                  1 Reply Last reply
                  0
                  • hskoglundH Offline
                    hskoglundH Offline
                    hskoglund
                    wrote on last edited by hskoglund
                    #21

                    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;
                    
                    M 2 Replies Last reply
                    0
                    • hskoglundH hskoglund

                      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;
                      
                      M Offline
                      M Offline
                      mirro
                      wrote on last edited by mirro
                      #22

                      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)); });
                      
                      mrjjM 1 Reply Last reply
                      0
                      • M mirro

                        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)); });
                        
                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #23

                        @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.

                        M 1 Reply Last reply
                        1
                        • mrjjM mrjj

                          @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.

                          M Offline
                          M Offline
                          mirro
                          wrote on last edited by mirro
                          #24

                          @mrjj

                          How does the following lambda qt5 code translate into a normal slot for the singleshot in QT4?
                          [this] { signalFromQt("Hello no.:" + QString::number(++i)); }

                          mrjjM 1 Reply Last reply
                          0
                          • M mirro

                            @mrjj

                            How does the following lambda qt5 code translate into a normal slot for the singleshot in QT4?
                            [this] { signalFromQt("Hello no.:" + QString::number(++i)); }

                            mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by
                            #25

                            @mirro
                            QTimer::singleShot(0, this, SLOT(theslot()));

                            like any other slot

                            theslot must be in the class that is /this/
                            the i variable must be also be a class member of same class

                            1 Reply Last reply
                            1
                            • hskoglundH hskoglund

                              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;
                              
                              M Offline
                              M Offline
                              mirro
                              wrote on last edited by
                              #26

                              @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)); });
                              
                              mrjjM 1 Reply Last reply
                              0
                              • M mirro

                                @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)); });
                                
                                mrjjM Offline
                                mrjjM Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on last edited by mrjj
                                #27

                                @mirro
                                Hi
                                As told, Qt4 has no lamdas./ the new connect syntax.
                                so no you cannot use that syntax in Qt4.

                                1 Reply Last reply
                                1

                                • Login

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups
                                • Search
                                • Get Qt Extensions
                                • Unsolved