Los widgets transparentes no se mueven con su padre
Frecuentes
Visto 692 veces
2
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?
1 Respuestas
1
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 qt qwidget qmainwindow qtgui or haz tu propia pregunta.
Si establece primero el padre y luego establece la hoja de estilo, ¿eso hace una diferencia? - James
Si lo hago, perderé transparencia en absoluto. - Ashish Mittal