我知道有答案,但他们不满足我的问题。它不适合我。
我有一个名为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)保存在assoc的链接中。小部件,以获得它的位置。获取窗口小部件的位置不正常。不知道为什么......
SmartPopUp::SmartPopUp( QWidget* associatedWidget, QWidget *parent): SmartPanel(parent)
{
associatedWidget_ = associatedWidget;
setContentsMargins(30,10,20,20);
hide();
QVBoxLayout* lyt = new QVBoxLayout();
setLayout(lyt);
}
如何让它与按钮位置的变化一起移动?
答案 0 :(得分:0)
制作一个topWidget。
将SmartPoUp和SmartPanel设为此父级的子级。
为SmartPoUp调用raise()
为SmartPanel重新实现moveEvent,并根据SmartPanel的新位置移动您的SmartPopup。