Armadilloフォーラム

Armadillo-440 Qt

tsushiro

2015年10月22日 11時52分

お世話になっております。tsushiroと申します。

Armadillo-440を用いてQtでアプリケーションを作成し動作させていたところ、
Qtアプリケーションが突然終了し、以下のような2つのログが表示されていました。

1.load translation path failed "/usr/local/Trolltech/Qt-4.8.3-qws-qrmel//translations" "qt_c"
2.QPaintDevice: Cannot destory paint device that is being painted

電源を一度落とし、再度投入するとアプリケーションは正常に動作し始めます。
また、突然終了する現象が頻発しているわけでなく、
再現させようとしましたが、再現させることができませんでした。

そのため、何が原因で終了したのか検討をつけれずにいます。

1のエラーについて。
パスが見つからないというエラーということは理解しているのですが、
なぜQt-4.8.3-qws-qrmelの後が「//」となっているのかが解っていません。
ディレクトリパスが「//」になる原因として、どのような事が考えられるのでしょうか?
また、"qt_c"とは何を示しているのでしょうか?

2のエラーについて。
QPaintの使い方で誤りがあるため、このようなエラーが発生しているのでしょうか?

コメント

at_yashi

2015年10月30日 14時01分

> 1のエラーについて。
> パスが見つからないというエラーということは理解しているのですが、
> なぜQt-4.8.3-qws-qrmelの後が「//」となっているのかが解っていません。
> ディレクトリパスが「//」になる原因として、どのような事が考えられるのでしょうか?

dir//file は、ディレクトリを示すために dir/ と、
ファイルを表すための /file を繋いだ時などになることがあります。
本来なら

char *create_path(char *dir, char *file)
{
    dir = strip_trailing_slash(dir);
    return = join_path(dir, "/", file);
}
 
char *dir = "some/where/";
char *file = "myfile.txt";
cahr *path;
 
path = create_path(dir, file);

とかやるですが、/が残ってしまったんでしょう。パス名としては、
dir//filedir//file も同じ意味なので問題にならないことが多いです。

> また、"qt_c"とは何を示しているのでしょうか?

QTranslator Class が使うファイルじゃないかと思うのですが、どうでしょう?
環境変数が末尾の_C とかにでてくるような気がします。

> 2のエラーについて。
> QPaintの使い方で誤りがあるため、このようなエラーが発生しているのでしょうか?

QPaintDevice: Cannot destory paint device that is being paintedは、上記のエラーと
関係ありますか?ないような気がするのですが...。

こっちのエラーは、paint device を使っている時に、destructor が呼ばれているような?
http://doc.qt.io/qt-4.8/qpainter.html#QPainter-2