2016-01-07 28 views
0

我想一个标签的文本更改为滑块的值当滑块移动。我的滑块名为sld_bet,我的标签为lbl_betsld_bet_changed()是一个函数,它只有一个断点,并且最终将包含lbl_bet的修改代码。QT5信号和槽似乎并没有工作

断点永远达不到的,我不明白为什么。

app::app(QWidget *parent) 
    : QMainWindow(parent) 
{ 
    ui.setupUi(this); 

    connect(ui.sld_bet, SIGNAL(ui.sld_bet->sliderMoved()), 
     this, SLOT(sld_bet_changed())); 
} 
+3

您没有使用正确的语法。应该是'SIGNAL(sliderMoved())'。 sld_bet_changed定义为插槽吗? – ajshort

+0

是的。谢谢。 –

回答

3

如果您使用的是Qt 5,使用新的连接语法。这样编译器会在出现错误时抛出错误。

connect(ui.sld_bet, &QSlider::sliderMoved, this, &app::sld_bet_changed); 
+0

有没有一个地方,那里是一个QT5教程?我主要从qt文档中提取我的代码。 –

+0

[woboq](http://woboq.com/)有非常好的教程和博客,如果你对Qt的内部工作感兴趣,你应该看看Qt 5信号和插槽:[Signals和Qt5中的插槽](http://woboq.com/blog/new-signals-slots-syntax-in-qt5.html) –

4

变化

connect(ui.sld_bet, SIGNAL(sliderMoved()), this, SLOT(sld_bet_changed())); 
+0

谢谢,不过我应该提到我使用的是qt5,而这不适用于qt5。 –

+0

嗯即时通讯使用它与qt5没有问题。但是,如果您使用的是qt5,建议您也使用新的信号插槽语法。即时通讯只是懒惰地转换所有我的旧项目。 https://wiki.qt.io/New_Signal_Slot_Syntax – DevGuy

+1

@DevGuy FYI:不知道你是否意识到这一点,但你可以使用最新的Qt Creator的快速修复,自动旧的语法转换到新的(一个接一个不幸)。只需将光标放在连接语句上,按ALT + Enter(除非已更改,则默认为)并选择“convert connect()to Qt 5 Syle”。 –