Los widgets transparentes no se mueven con su padre

Creé una aplicación Qt que muestra un widget transparente. Ya tengo otra aplicación Qt en ejecución que abre un formulario. Esta aplicación Qt actuará como padre para mi widget transparente. Después de cambiar el elemento principal de mi widget transparente, cuando muevo mi ventana Qt principal, mi widget transparente (ahora un elemento secundario de la segunda aplicación Qt) no se mueve en absoluto con respecto a su elemento principal.

Nota: si elimino el código de transparencia, mi widget secundario sigue a su elemento principal y se mueve junto con él.

Este es mi codigo:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

    ui->setupUi(this);

    setWindowFlags(Qt::FramelessWindowHint);
    setStyleSheet("background:transparent;");
    setAttribute(Qt::WA_TranslucentBackground);

    this->setGeometry(200,200,500,500);


    WId hMSTSCWindow = NULL;

    //hMSTSCWindow = FindWindow(TEXT("TSSHELLWND"), NULL);
    hMSTSCWindow = FindWindow(TEXT("QWidget"), TEXT("MainParent"));
    if(hMSTSCWindow != NULL)
    {
        SetParent(this->winId(),hMSTSCWindow );

    }

¿A dónde me estoy yendo mal?

preguntado el 03 de mayo de 12 a las 09:05

Si establece primero el padre y luego establece la hoja de estilo, ¿eso hace una diferencia? -

Si lo hago, perderé transparencia en absoluto. -

1 Respuestas

Según MSDN, cualquier ventana que no sea una ventana de nivel superior no debe hacerse transparente debajo de Windows 8. De lo contrario, el comportamiento podría ser inesperado como lo que estoy experimentando.

Respondido el 09 de junio de 12 a las 09:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.