問題タブ [qapplication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2134 参照

c++ - Qt: 現在のアプリケーション パレットを取得する

パレットを構成し、それを使用してアプリケーションに割り当てるクラスがありますQApplication::instance()->setPalette(QPalette palette)

そして、それは効果的に機能します。

しかし、それから私はQPalette QApplication::instance()->palette()いくつかの色を抽出するために使用しようとします.

しかし、ここでは機能しません。現在のパレットではなく、デフォルトのパレットを返すだけです。

それが想定どおりに機能し、ドキュメントに記載されていることを発見した後。

そして今、私は2つの質問しかありません:

  1. なぜ、このように奇妙で役に立たず、直感に反するモードで動作しているのでしょうか?
  2. を使用して設定されたパレットを取得するにはどうすればよい QApplication::instance()->setPalette(QPalette palette)ですか?

PS いいえ、そのパレットを他の場所に保管することはできません。

0 投票する
2 に答える
14838 参照

c++ - 最初に QApplication オブジェクトをインスタンス化してください

私は static クラスを持っていて、それを static にしたいですQSettings。しかし、初期化すると警告が表示されます。

QCoreApplication::applicationDirPath: 最初に QApplication オブジェクトをインスタンス化してください

QSetting回避策として、メイン関数の開始時に手動で初期化します。静的メンバーを初期化するより良い方法はありますか?

ありがとうございました!

0 投票する
2 に答える
1024 参照

android - (UPDATE) QT QML 5.6 - 「QApplication was not created in the main() thread」という警告の原因は何ですか?

[更新] OK、以前の質問を更新しています。widgets最初は、.pro ファイルから削除すると警告が表示されると思っていましたが、これは奇妙な動作でした。掘り下げた後、完全に空のアプリケーションになり、問題はまだ解決していません。私のアプリケーションは次のようになります。

同様の問題を抱えた他の投稿に基づいてQApplication、最初に初期化する必要があることを知りました。この場合、アプリケーションには他に何もありません。この警告はどのように表示されますか?

W/ (16992): (null):0 ((null)): WARNING: QApplication was not created in the main() thread.

Android for x86 (GCC 4.9, Qt 5.6.0)キットを使用して、Android デバイスでアプリケーションを直接コンパイルしています。

---- 古い質問\開始 ----

現在、Qt 5.6 (C++ および QML) に基づく Android アプリを開発中です。UI は QtQuick に基づいているため、pro.file から「ウィジェット」を削除しました。

これにより、次の警告が表示されます。

また... main() で QQmlEngine をインスタンス化するとすぐに (もちろん QApplication を作成した後)、この警告も表示されます。

明らかに、アプリケーションは別のスレッドで起動しますか? と main() 別の?「ウィジェット」を .pro ファイルに入れるとすぐに、両方のエラーが表示されなくなりました。私は本当に2つのことの間の相関関係を理解し​​ていません。PSはプログラムのこの段階ではあまり関係ありませんが、アプリケーションで新しいスレッドを作成していません。 これは私の main() がどのように見えるかです:

---- 古い質問\終わり ----

0 投票する
1 に答える
922 参照

python - Qapplication イベントループから新しい Qapplication を作成する

より明確になるように質問を書き直しました。

私のコードでは、QApplication を作成し、QTimer.singleShot() を使用してスロットをアプリケーションに接続し、アプリケーションを実行しました。

このスロットで、別のプロセスで別の QApplication を作成したいのですが、multiprocessing.Process クラスを使用し、プロセス内から別の QApplication を開始して実行しようとしましたが、イベント ループが既に実行されているため、エラーが発生しました! 2 つのイベント ループを実行できないことはわかっていますが、別のプロセスで新しい QApplication を実行しているので、実行する必要があります。

これが一般的な実装ではないことはわかっていますが、私の場合、これを実行する方がはるかに簡単です。

コード例を次に示します。「QCoreApplication::exec: The event loop is already running」というエラーが表示されます。

0 投票する
1 に答える
9114 参照

python - qApp 対 QApplication.instance()

PyQt5 では、これらは両方ともアプリケーション オブジェクトを返します。

しかし、なぜprint(QtWidgets.QApplication.instance() is QtWidgets.qApp)印刷するのFalseですか?

0 投票する
1 に答える
13067 参照

c++ - Qtのイベントループとは?

QApplication のexec機能に関して、次のことを理解しました。

QApplication exec は、メイン イベント ループを開始します。GUI を起動します。シグナルを処理し、受信時に適切なスロットを呼び出します。exit が呼び出されるまで待機し、exit に設定された値を返します。

さて、イベントループというのは、Qtの内部コードにwhileループが走っていて、その中にシグナルやスロットの処理方法が書かれているということでしょうか?

0 投票する
1 に答える
426 参照

c++ - QApplication を作成すると、4k モニターで高 dpi の場合に親 (非 Qt ウィンドウ) のサイズが変更されます

Qt5.6.1 を使用して、QtWinMigrate を使用して Qt ウィジェットを親ウィンドウに格納しています。親アプリが高 dpi モニター用にスケーリングされている場合、次の行:

スケーリングを強制終了し、親ウィンドウのサイズを変更して、150% または 200% のスケーリングが明らかに 100% にジャンプするようにします。これは、Qt ウィンドウを作成する前のことです。QApplication のコンストラクターだけがこれを行います。色々な工夫をしてみました。次のような qt.conf ファイル:

またはQApplicationを作成する前に:

どれも効果がないようです。このサイズ変更を防ぐにはどうすればよいですか?