• 3389阅读
  • 2回复

qt的event事件 [复制链接]

上一主题 下一主题
离线夏惠霞
 

只看楼主 正序阅读 楼主  发表于: 2016-02-28
我自定义了了一个自己的pushbutton类,
class MyButton:public QPushButton
{
public:
    explicit MyButton(QWidget *parent = 0);
    bool event(QEvent *e);
};
MyButton::MyButton(QWidget *parent)
    :QPushButton(parent){
}
bool MyButton::event(QEvent *e){
    if(this->isEnabled() == true){
        if(e->type() == QEvent::MouseButtonPress){
            this->setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1.000, stop:0 #07a8e1, stop:1 #036098);");
        }
        if(e->type() == QEvent::HoverEnter){
            this->setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1.000, stop:0 #07a8e1, stop:1 #05629a);");
        }
        if(e->type() == QEvent::HoverLeave){
           this->setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1.000, stop:0 rgba(6, 180, 242, 255), stop:1 rgba(2, 127, 202, 255));");
        }
   }
    return true;
}

当我在程序中使用这个自定义的控件的时候,程序运行起来的时候空间居然看不到了。但是如果我把最后一行return true改为:return QPushButton::event(event),控件就可以看到并且正常运行,这是为什么?
离线dosmlp

只看该作者 2楼 发表于: 2016-02-29
因为这个事件处理函数里面还包含了界面重绘等其他事件,你要传回基类处理这些事件
离线yanwuyue

只看该作者 1楼 发表于: 2016-02-28
除了你定义的动作,其它动作传回QPushButton
快速回复
限100 字节
 
上一个 下一个