[英]problem with QMouseEvent in QRect
OS :: win_xp_sp3
Qt的:: 4.6
可以在QRect中使用QMouseEvent嗎? 我有父小部件,里面是一些QLabel文本“狀態不變”。
此外,內部父窗口小部件是MyRect,它是從QRect派生的。
現在我想MouseEvent只在這個MyRect中運行。 例如,如果我在MyRect上操作,則需要更改父窗口小部件中的文本。
例如:
class MyRect : public QRect {
public:
MyRect(int x, int y, int w, int h, ParentWidget* parent)
: QRect(x,y,w,h)
{
itsParent = parent;
}
~MyRect() {}
protected:
void mouseMoveEvent(QMouseEvent* event)
private:
ParentWidget* itsParent
};
void MyRect::mouseMoveEvent(QMouseEvent* event)
{
if(event->buttons() == Qt::LeftButton)
{
itsparent->label->setText("status changed");
}
}
什么都沒發生
問題::是否可以像這樣使用QMouseEvent(僅限QRect)?
QRect既不是QObject也不是QWidget,因此它不接收事件。 它只是描述一個矩形的四個數字(從它衍生出來沒有意義)。 您可以檢查點是否是窗口小部件的鼠標事件處理程序中的給定rect。 喜歡:
void MyLabel::mouseMoveEvent( QMouseEvent* e ) {
if ( !rect.contains( e->pos() ) )
return;
//... handle mouse move
}
子類化的替代方法是使用事件過濾器 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.