Есть некий враппер, между либой и приложением. Враппер - класс, в котором все функции - pure virtual. Класс переопределяется в приложениию
Есть функция:
virtual void showProgressBar (QString title, const char * cancelSlot) = 0;
cancelSlot - слот, который должен быть вызван при нажатии кнопки "Отмена".
Функция реализована в приложении так:
C++ (Qt)
void WinegameUi::showProgressBar(QString title, const char *cancelSlot)
{
qDebug() << "Showing progressbar with a slot" << cancelSlot;
progress = new QProgressDialog(0);
connect (progress, SIGNAL(canceled()), this, cancelSlot);
progress->setWindowTitle(title);
progress->setModal (true);
progress->setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint);
progress->show();
}
Вызывается так:
ui->showProgressBar(tr("Downloading Wine..."), SLOT(cancelCurrentOperation()));
При этом слот объявлен так:
class corelib : public QObject
{
Q_OBJECT
//...
private slots:
//...
void cancelCurrentOperation();
/....
};
Использую в библиотеке так:
C++ (Qt)
ui->showProgressBar(tr("Downloading Wine..."), SLOT(cancelCurrentOperation()));
Когда выполняю программу - showProgress вызывается, но connect со слотом, который передается во 2-м аргументе в виде const char * не происходит. Выхлоп:
Showing progressbar with a slot 1cancelCurrentOperation()
Object::connect: No such slot WinegameUi::cancelCurrentOperation() in /home/pasha/work/winestuff/src/corelib.cpp:523
Как бы мне вырулить из этой ситуации?