透明小部件不与父级一起移动

时间:2012-05-03 08:57:11

标签: qt qwidget qmainwindow qtgui

我创建了一个Qt应用程序,它可以打开一个透明的小部件。我已经运行了另一个Qt应用程序,它会显示一个表单。这个Qt应用程序将充当 我的透明小部件的父级。 更改透明窗口小部件的父窗口后,当我移动我的父Qt窗口时,我的透明窗口小部件(现在是第二个Qt应用程序的子窗口)根本不会移动它的父窗口。

注意:如果我删除透明度代码,那么我的子窗口小部件将跟随其父窗口并随之移动。

这是我的代码:

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 );

    }

我哪里错了?

1 个答案:

答案 0 :(得分:1)

根据MSDN,任何不是顶级窗口的窗口都不应该在Windows 8下面透明。否则行为可能会出乎意料,就像我遇到的那样。