2

透明なウィジェットを表示する Qt アプリケーションを作成しました。フォームを表示する別の Qt アプリケーションが既に実行されています。この Qt アプリケーションは、透明なウィジェットの親として機能します。透明なウィジェットの親を変更した後、親の Qt ウィンドウを移動すると、透明なウィジェット (2 番目の 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 );

    }

どこが間違っていますか?

4

1 に答える 1

1

MSDN によると、最上位のウィンドウではないウィンドウは、Windows 8 の下で透明にすべきではありません。

于 2012-06-09T08:19:29.393 に答える