【问题标题】:Extend a QT QRadioButton Class to attach QSound::Play to a private slot扩展 QT QRadioButton 类以将 QSound::Play 附加到私有插槽
【发布时间】:2014-11-25 16:10:43
【问题描述】:

我一直在使用 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"...

一切都编译得很好,当我使用 vanilla 套接字和插槽时,我会听到咔哒声,但使用提升的单选按钮和私有插槽时,我没有任何乐趣。

感谢您的帮助! :)

【问题讨论】:

  • 没有欢乐意味着插槽被调用,但声音没有播放,还是其他什么?您是否将该声音文件放入资源中?
  • 对我投了一点反馈意见的人将不胜感激。我已经研究并尝试了几个小时的不同方法,我只是在万不得已的情况下才提出这个问题,这似乎是一个对其他人有用的问题。
  • 声音文件在资源文件中,正如我在原始帖子中提到的,当我使用普通 QRadioButton 类并包含 QSound::play... 对于每个信号我没有问题,只有当我尝试创建子类时,我遇到了问题。
  • 你是不是在给出答案后更改了这里的代码?这不是好的做法。我们看不出是什么错误。

标签: qt class subclass slots qradiobutton


【解决方案1】:

我认为正在发生的事情是您正在覆盖QAbstractButton 中定义的connect 信号,它是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");
}

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

【讨论】:

  • 我会投票给你,但我没有足够的声誉。我没有机会测试您的解决方案,但这很有意义。感谢您花时间写回复,我回家后会告诉您情况如何。如果它有效,你将成为我当天最喜欢的人!
  • 谢谢!!我不敢相信我一直如此接近它!再次感谢!
  • @user2342062 不客气。很高兴该解决方案对您有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
相关资源
最近更新 更多