【问题标题】:Qt signals and slots pass by referenceQt 信号和槽通过引用传递
【发布时间】:2014-02-26 22:07:32
【问题描述】:
void Scene::mousePressEvent( QMouseEvent * iEvent )
{
    Square temp;

    emit GetSquareParameters( temp.color.red, temp.color.green, temp.color.blue, temp.size );

    m_Squares.push_back( temp );
}

我从QMouseEvent 获取鼠标坐标,并且需要从MainWindow 的一些滑块获取参数。我在Scene 中创建信号GetSquareParameters,在MainWindow 中创建SendSliderParams 插槽。

信号和槽像a
connect( ui->widget, SIGNAL( GetSquareParameters( int, int,int,int)), this, SLOT( SendSliderParams( int, int,int,int) ) );

我可以通过引用将参数传回信号和插槽吗?如果不是我怎么能实现我想要的行为?

【问题讨论】:

    标签: c++ qt signals


    【解决方案1】:

    没有信号调用纯粹是一种方式,因为可能有超过 1 个插槽连接到信号(反之亦然)

    你可以让它成为一个真正的函数调用,你可以通过引用传递

    或者创建一个相反方向的信号槽连接作为回调

    【讨论】:

    • connect( ui->widget, SIGNAL(GetSquareParameters( int &, int &,int &,int &)), this, SLOT( SendSliderParams( int &, int &,int &,int & ) ) );我是这样连接的,它有帮助。
    • 这是不正确的,可以以相反的方向传递值,请参阅 Qt 中 d-bus 的示例。但强烈不建议这样做,而且很难维护(床设计)。不管成本如何,我都会避免这种情况。
    • 在这种情况下哪种设计更好?它运作良好,但我明白它有多糟糕。
    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多