0

私は Android 用の QT5 をいじっていますが、既存のクラスを拡張するのに少し苦労しているので、昇格したラジオ ボタンをクリックするたびにサウンドを再生できます。

開始するために標準の 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 に答える