Я пытаюсь увеличить изображение, используя QT и C ++.
Я унаследовал объекты QLabel в моих классах, чтобы показать картинки.А также поместите этот QLabels в mdiarea.
функция масштабирования работает нормально, однако qlabel не обновляет свой размер немедленно.Если я пытаюсь изменить размер вручную (с помощью курсора), программа автоматически обрабатывает его и изменяет размер qlabel по своему желанию.
Как я могу немедленно обновить размеры.
Спасибо за помощь.:)
bool MdiChild::event ( QEvent * e ){
//qDebug("asd1");
if(e->type() == QEvent::Wheel){
int numDegrees = ((QWheelEvent*) e)->delta() / 8;
double numSteps = (double)numDegrees/150;
int w = pix->width();
int h = pix->height();
ratio += numSteps;
qDebug("ratio = %f", ratio);
QPixmap* p = new QPixmap(pix->scaledToHeight ( (int)(h * ratio),Qt::FastTransformation ));
setPixmap(*p);
adjustSize();
adjustSize();
update();
}
return QWidget::event(e);
}
Проблема решена, но я не могу ответить на свой вопрос.Когда я добавляю одно и то же событие в родительское окно, проблема решается.Но когда я максимизирую окно, внутренний объект также получает событие и вылетает в максимизированном окне.
bool ImageProcessor::event ( QEvent * e ){
if(e->type() == QEvent::Wheel){
QList<QMdiSubWindow *> childList = ui.mdiArea->subWindowList();
for(int i = 0; i<childList.count(); i++){
childList[i]->adjustSize();
}
}
return QWidget::event(e);
}