透明小部件不随其父级移动

Posted

技术标签:

【中文标题】透明小部件不随其父级移动【英文标题】:Transparent widgets are not moving with their parent 【发布时间】:2012-05-03 08:57:11 【问题描述】:

我创建了一个 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】:

根据 MSDN,任何不是***窗口的窗口都不应在 Windows 8 下透明。否则行为可能会像我正在经历的那样出乎意料。

【讨论】:

以上是关于透明小部件不随其父级移动的主要内容,如果未能解决你的问题,请参考以下文章

父级大小更改时如何更改子窗口小部件的大小?

Flutter:了解无状态/有状态小部件如何布局其子级?

Gtk3用另一个小部件替换子小部件

如何设置自定义小部件的背景颜色和边框宽度?

如何在 Flutter 中对齐单个小部件?

QT gui 项目不会缩小到其父小部件的 ft