Здравствуйте!
Есть программа, которая по bluetooth подключается к роботу. Я пишу gui к этой программе.
Проблема в следующем: в файле EpuckInterface.hpp описаны интерфейсы, к которым можно подключаться:
#ifndef EPUCKINTERFACE_HPP__
#define EPUCKINTERFACE_HPP__
#include <string>
using std::string;
#include "EpuckTypes.hpp"
#include <MeinHeader.h>
#include <QDialog>
namespace gui {
class EpuckImage; // reference used in EpuckInterface
using gui::robots::epuck::IntFeld;
using gui::robots::epuck::led::LEDState;
class EpuckInterface
{
public:
virtual ~EpuckInterface() { }
virtual void reset() = 0;
// drive
virtual void setMotorSpeed( int left, int right ) = 0; //управление колесиками на роботе
virtual IntFeld<2> getMotorSpeed() = 0;
virtual void setMotorPosition( int left, int right ) = 0;
virtual IntFeld<2> getMotorPosition() = 0;
virtual void stopRobot() = 0;
};
}
#endif
Я создал MeinHeader.h :
#ifndef MEINHEADER_H
#define MEINHEADER_H
class MyWindow: public QDialog // Сюда мне нужно,как я понимаю,
//добавить класс EpuckInterface
// если я делал так: class MyWindow: public QDialog, public gui::EpuckInterface
// то QT выдает ошибку: error: expected class-name before '{' token
// если же я не пытаюсь добавить gui::EpuckInterface
//то: 'gui::EpuckInterface' has not been declared
// как мне здесь включить класс EpuckInterface, чтобы я мог в void TTEST(); написать
// void TTEST(gui::EpuckInterface *e);? так как MyWindow.cpp требует это декларировать.
{
{
Q_OBJECT
public:
MyWindow(QWidget *parent = 0 );
private:
EpuckInterface *e; // не работает
QPushButton *ttest; // для простоты оставил одну кнопку
private slots:
void TTEST(gui::EpuckInterface *e);
};
#endif // MEINHEADER_H
В файле MyWindow.cpp все стандартно:
#include <QObject>
#include <MeinHeader.h>
#include <EpuckInterface.hpp>
MyWindow::MyWindow(QWidget *parent): QDialog(parent)
{
e = new gui::EpuckInterface; // тоже не работает
ttest = new QPushButton(tr("ttest"));
connect(ttest,SIGNAL(clicked()),this,SLOT(TTEST(gui::EpuckInterface *e)));
QGridLayout *grid = new QGridLayout;
grid->addWidget(ttest,0, 5);
setLayout(grid);
StopClicked();
setWindowTitle("---");
}
void MyWindow::TTEST(gui::EpuckInterface *e)
{
e->setMotorSpeed(100,50) ; // сюда я не могу попасть из MyWindow::MyWindow .....
}
}
Надеюсь, мой вопрос ясен. Если коротко, то - как я могу в мною созданных слотах использовать
класс EpuckInterface и все, что в нем лежит?