我正在尝试使用 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);
}