0

答えがあることは知っていますが、私の質問を満足させるものではありません。それは私のために働いていません。

PopUpというシンプルなカスタムウィジェットがあります。これは、スタイル付きパネルであり、以下を含むSmartPanelを継承します。

setWindowFlags( Qt::Window | Qt::FramelessWindowHint );
setAttribute(Qt::WA_QuitOnClose, true);
setAttribute( Qt::WA_TranslucentBackground );

押したボタンの上に表示され、ポップアップまたは閉じるウィンドウが表示されます。出入りすると自然に閉まります。

私は試した:

A)ボタンの子にするので、ボタンが移動する場所で移動します。明らかに動作するはずです。上手。まったく機能しません...ウィンドウの左上隅の0,0に常に留まります。私もウィンドウを動かし、ボタンを動かし、ポップアップは同じままです...それが子供であっても!。

SmartPopUp::SmartPopUp( QWidget *parent): SmartPanel(parent)
{
   setContentsMargins(30,10,20,20);
   hide();
   QVBoxLayout* lyt = new QVBoxLayout();
   setLayout(lyt);
 }

B)関連へのリンク内に保存します。ウィジェット、その位置を取得します。ウィジェットの位置の取得が正しく機能しません。理由がわからない...

SmartPopUp::SmartPopUp( QWidget* associatedWidget, QWidget *parent): SmartPanel(parent)
{
  associatedWidget_ = associatedWidget;
  setContentsMargins(30,10,20,20);
  hide();

  QVBoxLayout* lyt = new QVBoxLayout();
  setLayout(lyt);
}

ボタンの位置の変化に合わせて動かすには?

4

1 に答える 1

0
  1. トップウィジェットを作成します。

  2. この親の子として SmartPoUp と SmartPanel を作成します。

  3. SmartPoUp の raise() を呼び出します

  4. SmartPanelのmoveEventを再実装し、SmartPanel の新しい位置に従って SmartPopup も移動します。

于 2013-02-22T13:25:59.357 に答える