QTとC++を使用して画像を拡大しようとしています。
写真を表示するために、クラスでQLabelオブジェクトを継承しました。また、このQLabelを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);
}