R
R
Roman2016-03-13 20:22:39
Qt
Roman, 2016-03-13 20:22:39

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

I created 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

Everything is standard in the MyWindow.cpp file:
#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 .....
                                                 
}

}

Hope my question is clear. In short, how can I use
the EpuckInterface class and everything that lies in it in the slots I created?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
J
Jacob E, 2016-03-13
@Zifix

You are completely wrong with the UI in Qt. EpuckInterface looks like a logic class, and for some reason you are trying to make it an ancestor of the UI class. Just instantiate EpuckInterface as a MyWindow field.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question