Здравия Всем !
Помогите решить проблему "вылета" арр при повторном открытии QSA QSWorkbench.
Код. Всё "лишнее" убрано, ес-сно ...
class MdiChild : public QTreeView
{
Q_OBJECT
public:
MdiChild(QWidget *parent = 0);
~MdiChild();
protected:
void closeEvent(QCloseEvent *event);
void contextMenuEvent(QContextMenuEvent *event);
void mouseDoubleClickEvent ( QMouseEvent * event );
private:
DomModel *model;
// !!! Трабл начинается тут !!! Т.к. у QSWorkbench НЕТ конструктора по умолчанию,
QSScript *qsa_scr;
QSProject *qsa_prj;
QSWorkbench *qsa_wbh;
};
////////////////////////////////////////////////////////////////////////////////////////
MdiChild::MdiChild(QWidget *parent) : QTreeView(parent)
{
setAttribute(Qt::WA_DeleteOnClose);
qsa_prj = new QSProject(this);
qsa_wbh = new QSWorkbench(qsa_prj, this); // Т.к. у него НЕТ конструктора по умолчанию !!!
}
MdiChild::~MdiChild()
{
delete qsa_wbh;
delete qsa_prj;
delete model;
}
////////////////////////////////////////////////////////////////////
void MdiChild::editAll()
{
QString fName, sCode;
QModelIndex index = selectedIndexes().first(); // QItemSelectionModel::
DomItem *item = static_cast<DomItem*>(index.internalPointer());
if ((item->Idc >= 60) && (item->Idc <= 69)) // Script-s
{
if (item->Idc == 60) // Global Script-s
{
fName = QString("qsglobal.qsa");
sCode = model->getText(item->node().toElement(), "qsacode");
}
else
{
fName = QString("scr%1-%2.qsa").arg(item->Idc).arg(item->Idd);
sCode = QString("// script\n %1").arg(item->node().toElement().text());
}
qsa_scr = qsa_prj->createScript(fName, sCode);
qsa_scr->setCode ( sCode );
qsa_wbh->showScript(qsa_scr); // <- Вот здесь вылетает в ошибку при повторном входе
qsa_wbh->open();
return;
}
QMessageBox::warning(this, tr("Дизайнер"), tr("Что собрался редактировать ?"));
}
Порядок действий для получения ошибки такой, - выбираем в окне QTreeView скрипт на
редактирование. Открывается QSA QSWorkbench. Можем выбрать другой скрипт, он
добавится в QSWorkbench второй вкладкой. И теперь если закрыть окно QSWorkbench
нажав на крестик в правом углу, а затем выбрать любой скрипт в окне QTreeView на
редактирование, то наблюдается стабильный вылет в отладчик.
Помогите решить сей трабл, плз. Я понимаю, что с логикой напутал, но по-другому
не получается, по причине отсутствия у QSA QSWorkbench конструктора по умолчанию.
Не переписывать-же его ...