20

私は Qt5.1 を使用しており、ディスプレイなしで QApplication を作成しようとしています。QPainter でテキストを描画する必要があるため、QApplication (または QGuiApplication) を使用する必要があります。そうしないと、segfault が発生します。

アプリケーションは Qt4.8 では問題なく動作しましたが、Qt5.1 ではヘッドレス バージョンの Ubuntu で次のエラーで失敗します。

「QXcbConnection: ディスプレイに接続できませんでした」.

Qt 4.8 では、GUIenabled = false で次のコンストラクターを使用して、ディスプレイを必要としない QApplication を作成できました。

QApplication::QApplication ( int & argc, char ** argv, bool GUIenabled )

Qt5.1 では、QApplication のコンストラクターに GUIenabled フラグがなくなりました。

ソースコードを簡単にスキャンしたところ、QApplication コンストラクターにフラグがあるようですが、そのフラグで使用できるオプションについては文書化されていません。「false」を使用しても機能しません。

ディスプレイなしで QApplication を作成するにはどうすればよいですか? QApplication GUIenabled = false を伝える別の方法はありますか? または、QImage で QPainter を使用してテキストを描画するときに segfault しない QCoreApplication を作成できますか?

4

2 に答える 2

24

はい、それは Qt 3 (?) で Qt 5 ではなくなったものです-platform offscreen。代わりに、コマンド ライン オプションを使用してアプリケーションを実行してみてください。

を使用する(および にリンクするQApplication)QtWidgetsだけで十分です。QImageQGuiApplicationQtGui

于 2013-07-31T19:56:02.870 に答える
5

QCoreApplicationGUI なしでアプリを作成する場合は、代わりにを使用する必要がありますQApplication

于 2013-08-01T10:26:32.477 に答える