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

Transparency of QGLWindow

Scheduled Pinned Locked Moved General and Desktop
1 Posts 1 Posters 751 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