2013-02-22 6 views
0

답변이 있지만 내 질문에 만족하지 않는다는 것을 알고 있습니다. 그것은 나를 위해 일하지 않습니다.런타임에 QWidget 위에 팝업 창이 나타납니다.

나는 PopUp이라는 간단한 사용자 정의 위젯을 가지고 있습니다. 그것은 스타일 패널 인 스마트 패널을 상속 그냥 포함 : 그것은 팝업 또는 종료는 푸시 버튼을 통해 나타납니다 창을 보여줍니다

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) assoc에 대한 링크 안에 저장하십시오. 위젯, 그 위치를 얻을 수 있습니다. 위젯의 위치가 올바르게 작동하지 않습니다. 이유를 모르겠다 ...

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

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

버튼의 위치가 바뀌면서 움직이는 것을 어떻게 만드나요?

답변

0
  1. 위젯을 만드십시오.

  2. 이 상위의 하위 항목으로 SmartPoUp 및 SmartPanel을 만듭니다.

  3. 전화 인상() 스마트 패널의 새로운 위치에 따라뿐만 아니라 당신의 SmartPopup 이동 스마트 패널에 대한 SmartPoUp

  4. 구현할 moveEvent과.

+0

... 버튼 위에 위치하지 않아도됩니다. "이 부모"란 무엇을 의미합니까? 원래의 질문입니다. 어떻게 버튼의 위치를 ​​얻고 그것을 항상 같은 장소에 두는 것이지, 간단한 QCursor :: pos(). x() ...와 y()가 아닙니다. – darkgaze

관련 문제