問題タブ [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 投票する
2 に答える
11412 参照

python - PyQt で QApplication を開始するために「sys.argv」が必要なのはなぜですか?

PyQt の機能を理解しようとしています。そして、私がしなかった最初のことの1つは、次のとおりです。

QApplication にこの引数を与える必要があるのはなぜですか? 私は何を知ってsys.argvいます。しかし、私のスクリプトでは、それは必要ありません。

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

c++ - QApplication を作成する前に Qt メタタイプ システムを使用しても問題ありませんか?

Qt メタオブジェクト システムに型を登録する必要があるときはいつでも、次のコードを使用します。

*.h ファイル

*.cpp ファイル

このようにして、main() 関数が開始される前に、可能なすべての方法で MyType を登録します。それで、質問は

1) Qt MetaObject システム全体で QCoreApplication のインスタンスが必要ですか? 私のコードは偶然にも機能するのでしょうか?

2)私の醜い松葉杖(つまり、クラーククラス)を含まない良い解決策はありますか?

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

python - PyQt4:centralWidget のさまざまなビュー。ベスト プラクティス ソフトウェア アーキテクチャ

私のプログラムでは、データを表示するためにさまざまなビューを定義したいと考えています。私の最初の試行では、すべてのビューが on クラス (QtGui.QWidget) で定義されていました。しかし、ビューのコードが長くなり始め、インタラクティブな機能も追加したいので、異なるビューを個々のクラスに分けたいと考えています。

以下に、私の最初の試みを示します。ここではsetCentralWidget、2 つのビューを切り替えるために使用しようとしていました。各ビューに切り替える前に、ビューの新しいインスタンスを生成する必要があります。そうしないと、実行時エラーが発生します。すべての View インスタンスは、centralview に存在しなくなるとすぐに破棄されるようです。

私はこれを正しく理解していますか?提案されたコード構造は問題ありませんか? または、このようにコードを構造化すると予想される問題はありますか? この種の問題に対する他の提案/ベストプラクティスはありますか?

マークされた行がないと、ビュー 2 をクリックしてからビュー 1 に戻ると、次のランタイム エラーが発生します。

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

c++ - QT/C++ アプリケーションにアクション アイテムを追加する方法

私は Qt/C++ でアプリケーションを作成しました。デフォルトでは、私の main にあります:

MainUi は、QApplication 内に表示されることになっているものを宣言するために使用されるクラスです。

この部分は別として正常に機能しています

私の目標は、新しいメニューを作成することではなく、デフォルトで利用可能なメニューに新しいアクションを作成することです。デフォルトでは、QApplication はメニュー 'puls_connect' を作成します。これは、「終了」アクションを持つプロジェクトの名前です。「About」の中に追加したいだけです

ここに画像の説明を入力

何か案が ?

ありがとう

0 投票する
4 に答える
7715 参照

c++ - Qt qDebug が QConsoleApplication または QApplication で動作しない

現在、Qt および Qt Creator を使用してプログラムを開発しているときに、非常に厄介な問題が発生しています。を使用する前にまたはインスタンス化さqDebug()れたを使用しようとすると、プログラムを Qt Creator で実行するか、通常のシェル (私は Fedora Linux を使用しています) から実行するかに関係なく、出力はありません。たとえば、次の単純なコードでも失敗します。QCoreApplicationQApplicationqDebug()

この問題について何をすべきか知っている人はいますか?前もってありがとう、マリウス

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

c++ - QApplication が遅延している (またはアプリで他のスレッドを遅延させている)

これは私の最初の投稿であり、私の問題の解決策を見つけたいと思っています。Qt を使用して Mac 用のアプリの開発を開始しました。私は今、巨大で苛立たしい問題に直面しています。

私の問題は、20〜50秒後にQApplicationイベントループが遅延する(またはアプリ内の他のスレッドが遅延する)ことです。同じ問題を再現しようとしたところ、以下のコードが思いつきました。

だからここに私がすることがあります。C++ の新しいスレッドを作成すると、新しいスレッドは現在の時刻を 2 秒ごとに出力します。問題は、10〜30回の反復の後です。一部の反復には6〜12秒かかりますが、反復ごとに2秒しかスリープしないため、発生しないはずです。以下のコードを実行したところ、出力は次のようになりました。

このプログラムを実行すると、毎回同じ問題が発生します。他の誰かがやろうとした場合に同じ問題が発生するかどうかはわかりません。しかし、それは私のマシンで起こります。

QApplication を使用しない以下のコードは正常に動作します。したがって、スレッド管理などについて、c++ スレッド、usleep、またはカーネルのせいにしないでください。もう 1 つの奇妙な点は、QApplication の代わりに QCoreApplication を使用すると、問題なく動作することです。さらに、ubuntu ベースのマシンで同じコードを使用しており、QApplication で正常に動作します。これはMacでのみ発生すると思います(ただし、Windowsは試していません)。

QThread、QTimer、または QTimer::singleShot の使用を提案しないでください。私は最初にそれらを使用していましたが、同じ問題を抱えていました。私は QTimer と QThread でシグナルを使用していましたが、問題はシグナルが時間内に送信されなかったか、信号が時間内に送信されたがスロットが時間内に呼び出されなかったことです。待ち時間は同様でした (6 ~ 12 秒)。実際、それが私がc++スレッドを使用している理由です。なぜなら、c++スレッドを使用すると問題が解決するかもしれないと思ったのですが、そうではなかったからです。

どんな助けでも大歓迎です。

OS: MAC OSX 10.9.5。

uname -a 出力:

コード: main.cpp:

test.pro:

編集:

timday のおかげで問題が解決しました。timday が提供したリンクに問題がありました。アプリをスリープさせていたのはアプリの昼寝だったので、タイマーとスリープの問題が発生していました。QApplication でのみ発生し、QCoreApplication では発生しない理由は、QApplication を使用するときに ui があると Mac が認識しているためです。したがって、アプリがアクティブでない場合、Mac はアプリをスリープ状態にすることができます。

回避策は、アプリの昼寝をプログラムで無効にすることでした。C/C++ で api を見つけることができませんでしたが、このリンクの目的の c に api があります。したがって、c++ から目的の c を呼び出しました。

C ヘッダー ファイル appnap.h を用意します。

次に、appnap.m を用意します。

次の行を .pro ファイルに追加します。

次に、アプリの昼寝でアプリをスリープさせたくない場合は、操作の開始前に disableAppNap を呼び出し、操作の終了後に enableAppNap を呼び出します。

これで私の問題は解決しました。

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

c++ - Qt - DLL 内のダイアログ

私の会社では、Embarcadero-C++-IDE で開発しています (これは非常に不快です)。移行を開始するには、dll 内の個々のダイアログを Qt に移植します。私のqt-dll-codeは、たとえば次のようになります

ここのように別のスレッドからダイアログを開始しようとすると、DLLからQt GUIを開始すると(DLLStart関数で)、ダイアログが応答しなくなりましたが、質問と私の質問があまり関係しているとは思いません。

この Dll をメイン アプリケーションから動的にロードしていますが、正常に動作します。ただし、ダイアログポップアップを2回目にすると、「モジュールMSVCR110D.dllのアドレス..でアクセス違反」が発生し、3回目には「 QCoreApplication でASSERTエラーが発生しました。アプリケーションオブジェクトは1つだけである必要があります」 . そのため、ダイアログをもう一度表示するには、常にアプリケーション全体を閉じる必要があり、作業が大幅に遅くなります。行の一番下に追加すると

ダイアログは 2 回目に表示されますが、この 2 回目のダイアログを閉じると Programm がクラッシュします。dll をロードするコードは次のとおりです。

では、一度に複数の QApplication を作成するのはなぜですか? 上記のコードで行を置き換えることができます

ダイアログが2回表示され、すべてがうまく機能します。しかし、::FreeLibrary(lib) を呼び出すと、どうすれば失敗するのでしょうか。

誰でも私を助けることができますか?ヘルプ、回避策などは大歓迎です。

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

c++ - 統合失調症のコンソール/GUI Qt5 プログラムは QApplication または QCoreApplication を使用する必要がありますか?

私のプログラムは、いくつかのコマンドライン パラメータに応じて、GUI を開くか、または開かないかのいずれかになります。現在、メイン イベント ループのインスタンス化QApplicationを行っていますが、ヘッドレス マシン (xorg/xcb がない) から実行すると、環境変数を指定して xorg が実行されていると信じ込ませないと、プログラムが異常終了することに気付きました。

代わりにインスタンス化するQCoreApplicationと、activeWindow() にアクセスできなくなります。プログラムがヘッドレスで実行される場合 (つまり、コマンドライン パラメーターの目的)、activeWindow() を必要とするコードは決して実行されません。

だから私が求めているのは、QApplication をヘッドレス マシンでも問題なく実行し、単に GUI を表示しないようにすることは可能でしょうか?

他のオプションは何ですか?

0 投票する
0 に答える
49 参照

c++ - アプリケーションでの QMathGL クラスの作成に関するエラー

アプリケーションでの MathGL ライブラリと MathGL インスタンスの作成に問題があります。実行しようとするたびに、QWidget (クラス QMathGL の継承元) の前に QApplication を構築する必要があるというエラーが表示されます。以下に、メインの私のコードと、MainWindow クラスに接続されたすべての関数を示します。

メインウィンドウ.cpp

main.cpp