我一直在玩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&#34; radiowclick.h&#34; ...
一切都很好,当我使用香草插座和插槽时,我得到了咔哒声,但是使用推广的radiobuttons和私人插槽我没有喜悦。
感谢您的帮助! :)
答案 0 :(得分:0)
我认为您正在发生的事情是覆盖connect
中定义的QAbstractButton
信号,QPushButton
是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");
}
实施
{{1}}
注意:我没有测试过这段代码。使用风险由您自己承担。