QT5类间通信

最近写活,要实现控件A拖动滚动条也能同步控件B。
lass A:public QWidget
{
    Q_OBJECT
public:
    explicit A(QWidget* parent=0);

protected:
    void paintEvent(QPaintEvent*);
signals:
public slots:
};

class B:public QWidget
{
    Q_OBJECT
public:
    explicit B(QWidget* parent=0);

protected:
    void paintEvent(QPaintEvent*);

void mouseMoveEvent(QMouseEvent *event) ;//鼠标移动事件
signals:
    void MySignal(int m,int n,bool bPress); // 加入自定义信号
public slots:
};

oid B::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons()&Qt::LeftButton)
    {        
        //鼠标左键按下并移动
        // event返回的鼠标坐标为当前控件尺寸范围内的值        

        emit MySignal(mouseX,mouseX_up,true);
        return;

    }else if(event->buttons()&Qt::LeftButton)
    {
        // 鼠标右键按下移动"
    }else if(event->buttons()&Qt::LeftButton)
    {
        // 鼠标中键按下移动
    }
    else
    {
        emit MySignal(event->x(),event->y(),false);// 没有按下鼠标任何键,只是移动鼠标
    }
}


在MainWindow的构造函数中:
QHBoxLayout* hboxlayout=new QHBoxLayout;
QScrollArea* scrollarea1=new QScorllArea;
scrollarea1.setSpacing(5);
scrollarea1.setMargin(5);
QScrollArea* scrollarea2=new QScorllArea;
scrollarea2.setSpacing(5);
scrollarea2.setMargin(5);
A* a=new A;
B* b=new B;
scrollarea1.setWidget(a);
scrollarea2.setWidget(b);
connect((const QObject*)scrollarea1->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(horMoveR(int)));
connect((const QObject*)scrollarea2->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(horMoveL(int)));

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值