gpt4 book ai didi

C++ 访问对象,QT

转载 作者:行者123 更新时间:2023-11-28 02:17:41 25 4
gpt4 key购买 nike

如果有人能帮助我,我将不胜感激。我不习惯C++。我是新手。

我的问题:我想让一个对象“player”可用于另一个类。我不知道如何存档。

主要.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();

return a.exec();
}

主窗口.h

#include <QMainWindow>
#include <QMediaPlayer>
#include <QDebug>
#include "Leap.h"
#include <leapmotionlistener.h>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
QMediaPlayer* player;
private slots:
....
private:
Ui::MainWindow *ui;
void initialize();

Controller controller;
LeapMotionListener leapMotionListener;
};

#endif // MAINWINDOW_H

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSound>
#include <iostream>
#include <QfileDialog>
using namespace std;

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{

ui->setupUi(this);

player = new QMediaPlayer(this);

connect(player, &QMediaPlayer::positionChanged, this, &MainWindow::on_positionChanged);
connect(player, &QMediaPlayer::durationChanged, this, &MainWindow::on_durationChanged);
initialize();
}

QString path;

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::initialize(){
controller.addListener(leapMotionListener);
leapMotionListener.setPlayer(player);
controller.setPolicy(Leap::Controller::POLICY_BACKGROUND_FRAMES);

}
...

leapmotionlistener.h

#ifndef LEAPMOTIONLISTENER
#define LEAPMOTIONLISTENER
#include <iostream>
#include <cstring>
#include "Leap.h"
#include <QFile>
#include <QAudioOutput>
#include <QMediaPlayer>

using namespace Leap;

class LeapMotionListener : public Listener {
public:
LeapMotionListener();
void setPlayer(QMediaPlayer&);
//... some more methods

private:
QMediaPlayer player;

};
#endif // LEAPMOTIONLISTENER

leapmotionlistener.cpp

//calls the player object in one method like the following
player.stop();

我的主要问题是:在引用和实例化时我做错了什么? leapmotionlistener 如何访问同一个播放器对象(我想影响音频)?

我得到错误:

MusicPlayer\mainwindow.cpp:32: Error:    C2664: 'void  LeapMotionListener::setPlayer(QMediaPlayer &)' : converting from argument  1 'QMediaPlayer *' in 'QMediaPlayer &' not possible

这个小项目可以通过以下链接下载以便快速查看: https://www.dropbox.com/s/igr7ywnvicdlxxd/MusicPlayer.zip?dl=0

提前致谢!

最佳答案

你需要做的就是

leapMotionListener.setPlayer(*player);

左值引用绑定(bind)到对象,而不是指向对象的指针。为了从指向它的指针获取对象,您需要使用 * 取消引用该指针。

关于C++ 访问对象,QT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33551749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com