変更盲目 (今回は Windows のみ) 用の小さなプログラムを作成しました。qgl ウィジェットの open gl を介して 4 つの画像 (2 つの実物、2 つのグレー) を表示します。それを行うためにペインターを使用します。
それは私のPCでかなり動作します。qtなしで他のファイルに配置しようとし、このglファイルをディレクトリに配置しました(依存関係ウォーカーで見つかりました):
libgcc_s_dw2-1.dll mingwm10.dll QtCore4.dll QtGui4.dll QtOpenGL4.dll
私のPCでは、QTCreatorの外で、パスが設定されていなくてもうまくいきました。他の各 PC では、QGL ウィジェットはただの黒です。プログラムは正常に動作しますが (ボタンをクリックするなど)、すべての画像が真っ黒です。パスを探しましたが、すべて問題ありません。何が起こっているのかわかりません。私が使用した PC には古いハードウェアが搭載されていますが、特別なことは何もありません (古いドライバーを搭載した古い Ati カードですが、中間設定で Half Life 2 をプレイできたので、ドライバーがインストールされていると思います)。
エラーメッセージなどはありません。それを修正するために何ができるか考えていますか? 何も機能しない場合は、このプログラムを含む ubuntu USB スティックを作成しようとします。
パス (パスは正しい):
C:\tina_and_mona\pics\1\1.jpg C:\tina_and_mona\pics\1\2.jpg C:\tina_and_mona\pics\1\3.jpg C:\tina_and_mona\pics\1\4.jpg
void FlickerImage::updateGL()
{
//qDebug() << "In UpdateGl Event";
painter.begin(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.drawImage ( QRectF(0,0,800,600), images[image_counter], QRectF(0,0, images[image_counter].width(), images[image_counter].height()));
//painter.fillRect(QRect(0,0,800,600), QColor(0,0,0,255));
painter.end();
}
void FlickerImage::loadImages()
{
busy = true;
images.clear();
/*images.append(QImage(QDir::toNativeSeparators(QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"1.jpg")));
images.append(QImage(QDir::toNativeSeparators(QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"2.jpg")));
images.append(QImage(QDir::toNativeSeparators(QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"3.jpg")));
images.append(QImage(QDir::toNativeSeparators(QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"4.jpg")));*/
images.append(QImage(QDir::toNativeSeparators(QDir::currentPath() + QDir::separator () + QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"1.jpg")));
images.append(QImage(QDir::toNativeSeparators(QDir::currentPath() + QDir::separator () + QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"2.jpg")));
images.append(QImage(QDir::toNativeSeparators(QDir::currentPath() + QDir::separator () + QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"3.jpg")));
images.append(QImage(QDir::toNativeSeparators(QDir::currentPath() + QDir::separator () + QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"4.jpg")));
qDebug() << "Before output file";
QFile output("image.log");
if(!output.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
{
qDebug() << "Could not open output";
}
else
{
qDebug() << "image.log could be opened";
output.write(QString("hi").toAscii());
output.write(QDir::toNativeSeparators(QDir::currentPath() + QDir::separator () + QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"1.jpg\n").toAscii());
output.write((QDir::toNativeSeparators(QDir::currentPath() + QDir::separator () + QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"2.jpg\n")).toAscii());
output.write((QDir::toNativeSeparators(QDir::currentPath() + QDir::separator () + QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"3.jpg\n")).toAscii());
output.write((QDir::toNativeSeparators(QDir::currentPath() + QDir::separator () + QString("pics") + QDir::separator () + QString::number(counter) + QDir::separator()+"4.jpg\n")).toAscii());
output.close();
}
busy = false;
}