[Interest] Can't I set QX11EmbedWidget

Oswaldo F. Filho offox2001 at gmail.com
Mon Aug 26 20:00:12 CEST 2013


I have the source code below:

widget.h

#include <QX11EmbedWidget>

#include <syslog.h>

class Widget : public QX11EmbedWidget
{
        Q_OBJECT

public:
        explicit Widget(QWidget *parent = 0);

public slots:
        void print()
        {
                syslog(LOG_INFO, "qtembed embedded");
        }

        void init()
        {
                connect(this, SIGNAL(embedded()), SLOT(print()));
        }
};


widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
        : QX11EmbedWidget(parent)
{

}


main.cpp

#include <stdio.h>
#include <syslog.h>

#include <QApplication>

#include "widget.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    Widget window;
  window.setWindowFlags(Qt::Window | Qt::CustomizeWindowHint |
Qt::X11BypassWindowManagerHint);
    window.init();
    WId id = window.winId();

    fprintf (stdout, "WINDOW ID=%li\n", id);
    fflush (stdout);

    syslog(LOG_INFO, "qtembed started!");
    syslog(LOG_INFO, "WINDOW ID=%li\n", id);

    window.show();

    return app.exec();
}


After executed /var/log/system:

Aug 26 14:47:23 station qtembed: qtembed started!
Aug 26 14:47:23 station qtembed: WINDOW ID=104857610
Aug 26 14:47:23 station qtembed: qtembed embedded


In my GTK application there is a container that receive Window ID using the
function:

static void
create_lock_socket (GSWindow *window, guint32   id)
{
        window->priv->lock_socket = gtk_socket_new ();
        window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);
        gtk_widget_show (window->priv->lock_box);
        gtk_box_pack_start (GTK_BOX (window->priv->vbox),
window->priv->lock_box, TRUE, TRUE, 0);

        gtk_container_add (GTK_CONTAINER (window->priv->lock_box),
window->priv->lock_socket);

        g_signal_connect (window->priv->lock_socket, "show",
                          G_CALLBACK (lock_socket_show), window);
        g_signal_connect (window->priv->lock_socket, "destroy",
                          G_CALLBACK (lock_socket_destroyed), window);
        g_signal_connect (window->priv->lock_socket, "plug_added",
                          G_CALLBACK (lock_plug_added), window);
        g_signal_connect (window->priv->lock_socket, "plug_removed",
                          G_CALLBACK (lock_plug_removed), window);

        gtk_socket_add_id (GTK_SOCKET (window->priv->lock_socket), id);
}

Another embed application write with GTK works well. My code with Qt
doesn't work. Window doesn't show.

What happened?

Oswaldo Fratini Filho.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20130826/75a3ee87/attachment.html>


More information about the Interest mailing list