問題タブ [qt]

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 投票する
3 に答える
3140 参照

c++ - プラグイン API 設計

そのため、QPlugin システムを使用する QT API に大きく基づいたアプリケーションがあります。使い方はかなり簡単です。インターフェイスから継承するクラスを定義し、プラグインが読み込まれると、そのクラスのインスタンスを取得します。最終的には、OS に適したdlopen/dlsymまたはLoadLibrary/に要約されます。GetProcAddressここで問題はありません。すべてが期待どおりに機能します。

それで、問題に。メイン アプリケーションによって提供されるデータ/関数を参照する必要があるプラグインを含む多くの機能があります。たとえば、私のアプリケーションには GUI があるので、アプリケーションに " plugin::v1::gui" を返す関数がありますQWidget *。プラグインで UI に何かを追加したり、そのダイアログを UI の子にしたりできるようにしたい場合は、それへのポインタが必要です。

私は Linux で開発を始めましたが、すぐに、デフォルトでは、ローダーが共有オブジェクト内の未解決のシンボルを、それをロードするアプリケーションからのシンボルで満たしていないという事実に遭遇しました。問題ありません。簡単に修正できます。-rdynamic" " をフラグに追加して先に進みます。事はうまくいきます。

今、私は Windows に同等のものがないことを発見しました :(。では、良い解決策は何ですか?

これまでのところ、プラグインが気にする可能性のあるすべてのオブジェクト/関数へのポインターを持つメインアプリケーションに入力する構造を持つことが最善です。次に、それをプラグインの " init()" 関数に渡すと、すべてへの適切なポインターが得られますが、何かを追加するたびに複数の場所で変更を加える必要があるため、面倒な解決策です。

より良い解決策はありますか?SO コミュニティはこれにどのように対処しましたか?

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

qt - .ui での信号とスロットの接続

Qt 4 で少し遊び始めました。そして、 Qt Designerで問題に遭遇しました。Signal/Slots エディター
では 、そこにリストされている接続のみをセットアップでき、すべてのスロットがリストされているわけではありません。

.ui ファイルに手動で追加しようとすると、接続が機能しません。
ui_*.h ファイルに追加すると正常に動作しますが、デザインを変更すると接続が削除されます。

このバグを回避するための良いヒントはありますか? または、別の言い方
をすると、Qt Designer に使用可能なすべてのスロットを一覧表示するにはどうすればよいですか?

0 投票する
3 に答える
471 参照

design-patterns - 自動削除メカニズムでやり直しを元に戻す

私のアプリケーションは Qt を使用して C++ で開発されており、シグナルとスロットを使用しています。

次のクラス (疑似 C++ コード) があるとします。

私のアプリケーションでは、ユーザーはプレーヤーを追加/削除でき、プレーヤーごとにボールの色とサイズを決定できます。内部では、GeneralHandler がボールの保存と削除を担当しています。2 人のプレーヤーが同じボールを使用する可能性は十分にあります。

プレーヤーが削除され、ボールがもう使用されていない場合、GeneralHandler はそれを削除する必要があります (または、ボールがまだ別のプレーヤーによって使用されている場合は保持します)。プレーヤーが使用しているボールが変更された場合、使用されなくなった前のボールも GeneralHandler によって削除される必要があります。

ここまでは順調ですね。

ここで、コマンド パターンを使用して元に戻す/やり直し機能をアプリケーションに追加したいと考えていますが、ここで行き詰まっています。私はこのようなものを持っているとしましょう:

redo() メソッドは次のようになると思います。

上記のコードで他に何も変更されていない場合、以前のボールは他のプレイヤーによって使用されなくなった場合に削除されます。これは、undo() メソッドを実装するときに問題になります。前のボールが削除された場合、その特性が何であったかがわからず、元に戻すコマンドで再作成できません。または、前のボールを保存する必要がありますが、元に戻す/やり直しコマンドは、この前のボールがまだ存在するか、ハンドラーによって削除されたかをどのように認識しますか? それとも、ボールが使用されなくなったらすぐにボールを削除するこのメカニズムは、元に戻すコマンドで実装する必要がありますか? 問題は、元に戻すコマンドが他の多くのクラスに多くの依存関係を持つことです。もう 1 つの問題は、このコードが DeletePlayer コマンドで部分的に複製され、同様のことを行う必要があることです。

私の説明が理解できることを願っています!

この問題をどのように解決しますか? 私は満足のいく解決策を見つけることができません。

ありがとう !

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

c++ - Qtで親ウィジェットにアクセスするには?

継承された QTreeWidget (PackList と呼ばれる) クラスがあり、その親は KXmlGuiWindow です。親のスロットにアクセスするにはどうすればよいですか?

QTreeWidget クラスから getParent()->mySlot() を試しましたが、

誰か正しい方法を知っていますか?ありがとう

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

linux - QTreeWidgetItem 継承クラスからデータを取得する

QTreeWidgetItem から継承するクラスがあり、クリック イベントをインターセプトします。

ツリー行をクリックしたときに、MY QTreeWidgetItem 内から別のオブジェクトを取得する必要があります。

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

c++ - QVariant をカスタム クラスにキャストするには?

QTreeWidgetItem 内に QVariant オブジェクトがあります。それを自分のオブジェクトにキャストするにはどうすればよいですか?

0 投票する
5 に答える
27968 参照

windows - Qmake での win64 構成の識別子

Qmakeプロジェクトファイルに「win64」識別子はありますか? Qt Qmake の高度なドキュメントでは、unix/macx/win32 以外は言及されていません。

これまでのところ、次を使用してみました:

結果は常に「win32 を使用」です。

x32 プロジェクトと x64 プロジェクトに別のプロジェクト ファイルを使用して、正しいライブラリに対してコンパイルする必要がありますか? 32 ビット環境と 64 ビット環境を識別する他の方法はありますか?

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

linux - QVariant と qRegisterMetaType に関する質問

クラス Pkg があり、それを QVariant の形式で使用する必要があります。

私の Pkg.h の終わりに私は持っています:

これはコンパイルエラーにはなりませんが、私の main.cpp では次のことをしなければなりません:

これもエラーにはなりませんが、QVariant(Pkg) を作成しようとすると、次のような多くのエラーが発生します。

そしてまたエラーにエラー...

0 投票する
6 に答える
23626 参照

c++ - Mixing Qt and Boost

I'm looking at starting a project in C++ using the Qt 4 framework (a cross-platform GUI is required). I've heard great things about the Boost libraries from friends and online. I've started reading up on both and wanted to ask a cursory question before I got too deep: Are these two development "systems" mutually exclusive?

My initial searching and reading shows some overlap in the signal handling, custom build systems, and other low-level primitives.

Does it make sense to use them both in the same project?

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

c++ - 理想的な QPixmapCache::cacheLimit を設定するにはどうすればよいですか?

QPixmapCache を使い始めたばかりですが、ドキュメントがあまりないため、アプリケーションが実行されているシステムに基づいてサイズを調整する方法について疑問に思っていました。

空きメモリがたくさんあるユーザーもいれば、空きメモリがほとんどないユーザーもいます。最適な設定が何かわかりません。

システム (空き) RAM を検出し、キャッシュ サイズを調整する最良の方法は何でしょうか?

http://doc.trolltech.com/4.4/qpixmapcache.html#setCacheLimit