LINUX.ORG.RU

Наследование QTimer


0

0

mytimer.h

#include <qtimer.h>

class mytimerMB: QTimer
{
	Q_OBJECT
		public:
		unsigned char numDev;
		unsigned char kolbyte;
		unsigned char *mesage;
		mytimerMB( QObject * parent=0, const char * name=0);
		~mytimerMB();
		void setValueMB(unsigned char,unsigned char,unsigned char*);
		
		public slots:
		void slotmytimerMB();
		
		signals:
		void signalmytimerMB(unsigned char,unsigned char,unsigned char*);
};

mytimer.cpp

#include "mytimer.h"

mytimerMB::mytimerMB( QObject * parent, const char * name): QTimer(parent, name)
{
	connect(this, SIGNAL( timeout() ), this ,SLOT( slotmytimerMB() ) );
}

mytimerMB::~mytimerMB()
{}

void mytimerMB::setValueMB(unsigned char a,unsigned char b,unsigned char* c)
{
	 	numDev=a;
		kolbyte=b;
		strcpy((char*)mesage,(char*)c);
}


void mytimerMB::slotmytimerMB()
{
	emit signalmytimerMB(numDev,kolbyte,mesage);
}


bla bla bla
.......
mytimerMB1=new mytimerMB(this);
mytimerMB1->setValueMB(1,5,fghdfghhg);
connect( mytimerMB1, SIGNAL( signalmytimerMB(unsigned char,unsigned char,unsigned char*) ), this , SLOT( requestMB(unsigned char, unsigned char , unsigned char *) ) );
mytimerMB1->start(2000);
.......

Ошибка

Error E2285 pdprd.cpp 181: Could not find a match for 'QObject::connect(mytimerMB *,char *,PDPRD * const,char *)' in function PDPRD::PDPRD(QWidget *,const char *,unsigned int)

и соответственно

Error E2316 pdprd.cpp 182: 'start' is not a member of 'mytimerMB' in function PDPRD::PDPRD(QWidget *,const char *,unsigned int)

Подскажите в чем трабл.

Вероятнее всего потому что PDPRD не наследует от QObject

phoenix ★★★★
()

А это ничего, что прототипы сишгала и слота не совпадают? В сигнале - параметры, а в слоте их нету...

Flogger_d
()

А вторая ошибка от того, что mytimerMB private наследует от QTimer, соотв-но QTimer::start() не видна снаружи класса mytimerMB

phoenix ★★★★
()

Да, там у тебя наследование - приватное. Напиши рублик перед QTimer

Flogger_d
()
Ответ на: комментарий от Flogger_d

Это конечно чего, но у автора даже не компилируется программа. Несовпадение прототипов скажется потом, когда ничего работать не будет :)

phoenix ★★★★
()
Ответ на: комментарий от phoenix

Всем спасибо за коменты разобрался.
дейсвительно вместо
class mytimerMB: QTimer
class mytimerMB: public QTimer
и се запахало.
Че то запарил после праздников.

Spicinpv
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.