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. Transparency of QGLWindow
Qt 6.11 is out! See what's new in the release blog

Transparency of QGLWindow

Scheduled Pinned Locked Moved General and Desktop
1 Posts 1 Posters 759 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.
  • S Offline
    S Offline
    sridhar.rr
    wrote on last edited by
    #1

    Hi,

    I require help in creating a transparent QGLWindow. Here is what I am doing.

    1. I have derived a class from QGLWidget and drawing a few symbols using paintGL().
    2. THe idea is to integrate this with QGIS, so that the symbols drawn will be visible on the map. The QGIS used QT v 4.7
    3. While creating the instance of the GLWidget class for creating a QGLWindow, the QGLWindow covers up the map canvas window and I’m unable to view the map in the background.
    4. Is there a way to make the QGLWindow transparent, so that the map in the background becomes visible.
    5. Is it possible to create the QGLWindow as a layer on the map.

    I have enclosed the code for reference.
    Any help is greatly appreciated.

    Thanks

    Regards
    Sridhar

    @
    GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent)
    {
    …..
    }
    void GLWidget::initializeGL()
    {
    ….
    }

    void GLWidget::resizeGL(int w, int h)
    {
    ….

    }

    void GLWidget::drawSymbol (float x_center, float y_center, float w, float h, int n)
    {
    float theta, angle_increment;
    float x, y;
    float fianlval=0.0;
    double PI_2 =6.24;
    if (n <= 0)
    n = 1;
    angle_increment = (PI_2) / n;
    glPushMatrix ();
    glTranslatef (x_center, y_center, 0);
    glScalef(0.5f, 0.5f, 0.0f); // Make the shape half as wide, the same height and twice as deep
    glBegin (GL_LINE_STRIP);
    for (theta = 0.0f; theta < (PI_2); theta += angle_increment)
    {
    x = (w/2) * cos (theta);
    y = (h/2) * sin (theta);
    glColor3f(1,0,0);
    glVertex2f (x, y);
    fianlval = theta;
    }
    glEnd ();
    glPopMatrix ();
    glPushMatrix ();

    glBegin (GL_LINES);
    glVertex2f(x_center, y_center-25);
    glVertex2f((x_center), (y_center-38));
    glEnd ();
    glPopMatrix ();
    glPushMatrix ();

    glTranslatef (x_center, y_center-48, 0);
    

    glScalef(0.6f, 0.3f, 0.0f);
    glBegin (GL_LINE_STRIP);

    for (theta = 0.1f; theta < (PI_2/2); theta += angle_increment)
    {
        x = (w/3) * cos (theta);
        y = (h/3) * sin (theta);
    

    glColor3f(1,0,0);
    glVertex2f (x, y);
    }
    glEnd ();
    glPopMatrix ();

    }

    void GLWidget::paintGL()
    {
    float angle =0.0;
    lat+=0.5;lon+=5;lat1+=0.5;lon1+=5;
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    drawSymbol(lat1,lon1,30.0,100.0,300);

    }

    int main(int argc, char ** argv)
    {
    QgsApplication app(argc, argv, true);
    mMapCanvas = new QgisCanvas( this, "theMapCanvas" );
    GLWidget * drawing = new GLWidget(mMapCanvas);
    drawing->resize(1000,800);
    drawing->setParent(mMapCanvas);
    mMapCanvas->show ();
    return app.exec();
    }
    @

    1 Reply Last reply
    0

    • Login

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