У меня в приложении есть Диалог с кнопками, после нажатия на которую в основное приложение должно отправиться ObjectName строкой. Но после отправки все приложение падает, подскажите где ошибка
Клас диалога:
C++ (Qt)
#ifndef MOVIESNAMEDIALOG_H
#define MOVIESNAMEDIALOG_H
#include <QDialog>
class QCommandLinkButton;
class MoviesName : public QDialog
{
Q_OBJECT
public:
MoviesName(QWidget *parent=0,const QString &httpResponce="");
QString movieID;
private slots:
void accept();
private:
QCommandLinkButton* createButton(const QString& id,const QString& name);
};
#endif // MOVIESNAMEDIALOG_H
C++ (Qt)
#include <QVBoxLayout>
#include <QCommandLinkButton>
#include "moviesnamedialog.h"
MoviesName::MoviesName(QWidget *parent,const QString &httpResponce)
:QDialog(parent)
{
setAttribute(Qt::WA_DeleteOnClose);
setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint);
setWindowIcon(QIcon(":/images/icon.png"));
setWindowTitle(tr("Select movie"));
QVBoxLayout *layouts=new QVBoxLayout;
QString line = httpResponce;
QRegExp rx("\\<a.*\\/level\\/1\\/film\\/(\\d+)*\\/sr\\/.*\\>(.*)\\<\\/a\\>, .*(\\d+)\\<\\/a\\>\\<\\/td\\>");
rx.setMinimal(true);
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(line, pos)) != -1) {
//qDebug() <<rx.cap(1)<< rx.cap(2)<< rx.cap(3);
pos += rx.matchedLength();
layouts->addWidget(createButton(rx.cap(1),QString("%1 ( %2 )")
.arg(rx.cap(2)).arg(rx.cap(3))));
}
setLayout(layouts);
}
QCommandLinkButton* MoviesName::createButton(const QString& id,const QString& name)
{
QCommandLinkButton* pcmd = new QCommandLinkButton(name);
pcmd->setObjectName(id);
connect(pcmd,SIGNAL(clicked()),this,SLOT(accept()));
return pcmd;
}
void MoviesName::accept()
{
QString id=((QCommandLinkButton*)sender())->objectName();
movieID = id;
QDialog::accept();
}
И функция вызова с оновного приложения
C++ (Qt)
void MainWindow::searchMovieDescription(const QString &httpResponce)
{
QString id;
MoviesName mn(this,httpResponce);
if(mn.exec())
id= mn.movieID;
qDebug() << id;
}
Получается в дебаг выводит и падает, а если я создаю диалог как
C++ (Qt)
QString id;
MoviesName *mn=new MoviesName (this,httpResponce);
if(mn->exec())
id= mn->movieID;
qDebug() << id;
Приложение вообще не получает значение.