Answer the question
In order to leave comments, you need to log in
Qt. How to inherit a class?
Hello!
There is a program that connects to the robot via bluetooth. I am writing a gui for this program.
The problem is this: the EpuckInterface.hpp file describes the interfaces that can be connected to:
#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
#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
#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 .....
}
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question