myio.h:
Код: Выделить всё
#include <qapplication.h>
#include <string>
using namespace std;
class myio : public QObject
{
public:
void echo ();
};myio.cpp:
Код: Выделить всё
#include <myio.h>
#include <string>
#include <qapplication.h>
#include <iostream>
using namespace std;
void myio::echo ()
{
cout << "Hello!" << endl;
}main.cpp:
Код: Выделить всё
#include <qapplication.h>
#include <qpushbutton.h>
#include "myio.h"
using namespace std;
int main ( int argc, char *argv[])
{
myio io;
QApplication app (argc,argv);
QPushButton *button = new QPushButton ("Quit",0);
myio::connect(button, SIGNAL(clicked()), &io, SLOT(echo()));
app.setMainWidget(button);
button -> show();
return (app.exec());
}Все прекрасно собирается, линкуется:
Код: Выделить всё
#qmake -project
#qmake qsample3.pro
makeно при запуске выдает:
Код: Выделить всё
QObject::connect: No such slot QObject::echo()
QObject::connect: (sender name: 'unnamed')
QObject::connect: (receiver name: 'unnamed')Попытки нажатия на кнопку ни к чему не приводят, и очевидно, сигнал не подключен. Почему-то коннектер пытается искать слот в QObject, но "не замечает" собственных функций класса myio. Что делать? И каково "стандартное" решение этой задачи?