Возникает такая ошибка в программе.
Полный текст:
Waiting for RPC reply to 'destroyWidget'' call timed out
Write error: "Unknown error"
Sending RPC id failed for call of 'setSymbianSoftKeys'
C:\Documents and Settings\arbogdanovs\Calendar_forum_v2-build-simulator\debug\Calendar_forum_v2.exe exited with code 3
Возникает ошибка в достаточно странном месте:
У меня есть класс (MainWindow) из которого создаются 3 других класса(DataManager, Calendar, TaskMain).
Ошибка возникает после того, как в MainWindow я получаю сигнал, который посылает TaskMain (после нажатия кнопки Back в TaskMain).
Самое то, что я не могу понять - даже если в слоте в MainWindow не писать ничего, дебуггер все равно виснет.
Вот часть кода:
TaskMain:
back = new QPushButton("Back");
connect(this->back, SIGNAL(clicked()), this, SLOT(backToCalendar()));
void TaskMain::backToCalendar()
{
emit showCalendar();
}
MainWindow:
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent)
{
dataManager = new DataManager;
calendar = new CustomCalendarWidget;
layout = new QVBoxLayout(this);
layout->addWidget(calendar);
/*
taskMain = new TaskMain(QDate::currentDate());
layout->addWidget(taskMain);
*/
connect(calendar, SIGNAL(clicked(QDate)), this, SLOT(openTaskMain(QDate)));
//connect(calendar, SIGNAL(setHoursList()), this, SLOT(setCalendarHoursList()));
//connect(taskMain->submit, SIGNAL(clicked()), this, SLOT)
}
void MainWindow::openTaskMain(QDate date)
{
calendar->setParent(0);
taskMain = new TaskMain(date);
layout->addWidget(taskMain);
connect (taskMain, SIGNAL(showCalendar()), this, SLOT(closeTaskMain()));
connect (taskMain, SIGNAL(clearDate(QDate*)), dataManager, SLOT(clearTaskItem(QDate*)));
connect (taskMain, SIGNAL(saveTaskItem(QDate*,TaskItem*)), dataManager, SLOT(addTaskItem(QDate*,TaskItem*)));
}
void MainWindow::closeTaskMain()
{
layout->addWidget(calendar);
calendar->hoursList = dataManager->hoursList;
taskMain->setParent(0);
}
MainWindow::~MainWindow()
{
}
Custom Calendar:
CustomCalendarWidget::CustomCalendarWidget( QWidget *parent) :
QCalendarWidget( parent )
{
this->setFirstDayOfWeek(Qt::Monday);
this->setGridVisible(true);
hoursList = new QList<QPair<QDate*, int> >;
}
void CustomCalendarWidget::paintCell(QPainter *painter, const QRect &rect, const QDate &date) const
{
//painter->setPen( Qt::black );
//painter->drawText( rect, Qt::AlignCenter, tr("ASD") );
if (this->monthShown()!=date.month())
painter->setPen(Qt::gray);
else
if (date.dayOfWeek()==6 || date.dayOfWeek()==7)
painter->setPen(Qt::red);
else
painter->setPen(Qt::black);
/*
int asd = this->selectedDate().weekNumber();
QDate nado = this->selectedDate().addDays(-5);
*/
QString hours = workHours(date);
QString str;
str.setNum(date.day());
//painter->fillRect(rect, Qt::white);
painter->drawText(rect, Qt::AlignTop, str);
painter->drawLine(rect.topRight(), rect.bottomLeft());
painter->drawText(rect, Qt::AlignBottom|Qt::AlignRight, hours);
}
QString CustomCalendarWidget::workHours(QDate date) const
{
QString string("0");
for(int i=0; i<hoursList->size(); i++)
{
if (hoursList->value(i).first==dateForCalendar)
string.setNum(hoursList->value(i).second);
}
return string;
}
CustomCalendarWidget::~CustomCalendarWidget()
{
}
Прога виснет после того, как если вернуться из TaskMain нажимая кнопку Back, заного все клеточки в календаре написуются (все клетки пройдут через Virtual Paint Cell...