我想映射一个点击,甚至在子窗口小部件上拖动到它的父窗口。具体来说,当我在下面的示例中拖动MyWidget
时,我希望MyButton
移动:
#include <QWidget>
#include <QPushButton>
#include <QApplication>
class MyButton : public QPushButton
{
public:
MyButton( QWidget *parent ) : QPushButton( parent )
{
}
};
class MyWidget : public QWidget
{
public:
MyWidget( QWidget *parent = NULL ) : QWidget( parent ) , button( this )
{
setFixedSize( 300 , 150 );
button.setText( "Button" );
button.setGeometry( 25, 25 , 250 , 100 );
}
private:
MyButton button;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();
return a.exec();
}
我不完全确定如何实现这一点,尽管我目前正在考虑让MyButton
将鼠标事件转发给MyWidget
。
答案 0 :(得分:1)
您可以在MyButton
中将MyWidget
声明为好友类,然后将MyButton::mousePressEvent
转发给MyWidget::mousePressEvent
,同样也可以将拖动事件转发给MyButton
。如果您要转发更多活动,并且不希望在QWidget::event
中实施许多不必要的方法,则可以在MyButton
中重新实施MyWidget::event
并将特定事件转发至QWidget::event
。在这种情况下,请记住为未处理的事件调用{{1}} explicite。