シーンの QImage の色を変更する QSpinBox があります。すべてがうまく機能します。色が正しく更新されます。QSpinBox の矢印を押したままにすると、すべて正常に動作します。QSpinBox の矢印を長時間押し続けると問題が発生します。約 1 分ほど保持すると、最終的にアプリケーションが応答を停止し、画像が消えることがあります。これを潜在的に引き起こしている可能性があることを誰かが知っているかどうか疑問に思っていました。アプリケーションが信号で行き詰まる可能性はありますか? もしそうなら、どうすればこれを修正できますか?
ご協力いただきありがとうございます!
コードのスニペットを次に示します。各ピクセル値を設定するためのものは含めていません。私は自分が正しくやっていると知っています。changeMinColor は、スピンボックスのシグナル用のスロットの 1 つです。
void binFileDialog::changeMinColor(double value)
{
lowColorValue = value;
ui->maxColorSpin->setMinimum(lowColorValue + .0001);
setBinScene();
}
void binFileDialog::setBinScene()
{
float lowValue = lowColorValue;
float highValue = highColorValue;
QImage img = QImage(bFile.ncols, bFile.nrows, QImage::Format_RGB32);
// go through and set call img.setPixel with rgb values based on contents of bFile
// and the min and max colors lowValue and highValue.
QPixmap pm = QPixmap::fromImage(img);
QGraphicsScene *scene = new QGraphichsScene;
ui->graphicsView->setSceneRect(0,0, bFile.ncols, bFile.nrows);
scene->addPixmap(pm);
ui->graphicsView->setScene(scene);
}
changeMinColor
QSpinBox のvalueChanged
信号に接続されています。
connect(ui->minColorSpin, SIGNAL(valueChanged(double)),
SLOT(changeMinColor(double)));
また、スピンボックスを押し続けると、メモリが増加することにも気付きました。これは間違っているに違いありません。私は何を忘れていますか?助けてくれてありがとう。