0

我一直在使用 QT5 for Android,我一直在努力扩展现有的类,以便我可以在单击已提升的单选按钮时播放声音。

我正在使用标准的QT APP模板开始,

这是我到目前为止所拥有的:radiowclick.h:

#ifndef RADIOWCLICK_H
#define RADIOWCLICK_H
#include <QObject>
#include <QWidget>
#include <qradiobutton.h>
class RadioWClick : public QRadioButton
{
    Q_OBJECT
Public:
    RadioWClick(QWidget *parent = 0);
signals:
    void clicked();
private slots:
    void PrivateClicked();
};
#endif // RADIOWCLICK_H

radiowclick.cpp:

#include "radiowclick.h"
#include <QtMultimedia/qsound.h>
RadioWClick::RadioWClick(QWidget *parent) :
    QRadioButton(parent)
{
    connect(this, SIGNAL(clicked()), this, SLOT(PrivateClicked()));
}

void RadioWClick::PrivateClicked()
{
    QSound::play(":/sounds/ButtonClick.wav");
}

main.cpp: #include "radiowclick.h"...

一切都编译得很好,当我使用香草插座和插槽时,我会听到咔哒声,但是使用提升的单选按钮和私人插槽我不高兴。

谢谢你的帮助!:)

4

1 回答 1

0

我认为正在发生的事情是您正在覆盖connect定义的信号,该信号QAbstractButtonQPushButton.

尝试删除您的定义clicked()并将您的信号连接PrivateClicked()到基类clicked()信号。

一些代码:

class RadioWClick : public QRadioButton
{
    Q_OBJECT
Public:
    RadioWClick(QWidget *parent = 0);    
private slots:
    void PrivateClicked();
};

以及实施

RadioWClick::RadioWClick(QWidget *parent) :
    QRadioButton(parent)
{
    connect(this, SIGNAL(clicked()), this, SLOT(PrivateClicked()));
}

void RadioWClick::PrivateClicked()
{
    QSound::play(":/sounds/ButtonClick.wav");
}

注意:我没有测试过这段代码。使用风险自负。

于 2014-11-25T16:35:52.337 回答