問題タブ [qobject]
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.
c++ - Qt プラグインの QObject ファクトリ (非作成者)
私は自分の問題に非常に神経質になり始めています。誰かが理解してくれることを願っています。1 つの実行可能ファイルといくつかのプラグイン (ランタイム ロード ライブラリ) を生成するプロジェクトがあるとします。その実行可能ファイルは、最初に適切なプラグインを探すある種のデーモン/サービスです。したがって、これらのプラグインは抽象的な通信レイヤーを提供する必要があります。私は Qt Doc を見て、.so からのインターフェイスの読み込みを提供する必要がある QPluginLoader クラスを見つけましたが、インターフェイスはシグナル/スロットを持つことができず、純粋な仮想でなければなりません。それで、QObjectベースのオブジェクトを返す何かを考えていました...
!!! 2 つのインターフェースと 2 つの実装しかないので、怖がらないでください :)
私のプロジェクトのレイアウトと内容:
./Daemon/Interfaces/PluginInterface.h
./Daemon/Interfaces/ProtocolInterface.h
./Daemon/ProtocolHander.cpp(&h) <- プラグインのロードといくつかのロジック
./Daemon.pro
./Plugins/Dummy/DummyPluginInterface.h
./Plugins/Dummy/DummyPluginInterface.cpp
./Plugins/Dummy/DummyProtocolInterface.h
./Plugins/Dummy/DummyProtocolInterface.cpp
./Plugins/Dummy/Dummy.pro
私の問題は、リンク エラーまたは実行時の未解決のシンボル (主に QObject からのもの) を取得している、または信号を接続できないことです... ProtocolHandler は、信号/スロットを接続するものでなければなりません..
このアプローチを正しくする方法を誰か教えてもらえますか? Qtの例はそのような考えをカバーしていません..
ありがとう!
アダム
qt - QObject が間接ベースにすぎないクラスに QObject 親を設定できないのはなぜですか?
を継承するクラスBatchItem
とQObject
、から継承するいくつかのクラスがありBatchItem
ます。
から継承するクラスの例BatchItem
:
そして、これは対応する .cpp です:
しかし、コンパイルしようとすると、次のエラーが発生します。
もちろん、これは正しいことがわかります。QObject
の間接ベースのみですVideoBatchItem
。しかし、なぜそれが問題なのですか?QAbstractScrollArea
から継承しQFrame
、さらにから継承するなどの場合も同様ではないQWidget
でしょうか。から間接的に継承するだけQWidget
ですが、それらはすべて親としてa を取ります。残念ながら、ドキュメントにも、名前付きウィジェット クラスの .cpp ファイルにも、その答えは見つかりませんでした。QAbstractScrollArea
QWidget
親を渡すことができないQObject
ため、派生したバッチ アイテムを破棄するために Qt の親子システムを使用する方法はありますか?
qt - QObject::QObject(QObject parent=0) は、このコンテキストではプライベートです
私はメッシュと呼ばれるクラスを持っています。そのオブジェクトを追跡したい。そのため、新しいメッシュが作成されるたびに、信号が必要でした。そして、すっごく追加しました
すべてのメソッドをスロットとして作成し、c-tor meshCreated にシグナルを追加しました。しかし、ここから私の長年の苦痛が始まりました。なんと、タイトルのエラーが出るようになりました。//
コードのすべての行の前に追加されたすべての行にコメントを付けたとしても、それでも同じことが言えます。どうすればこれを修正できますか?
実際のコード
c++ - QObjectを自己削除する最適な方法
NodeとNodeContainerの2つのクラスがあります。
ノードは親を持つことも持たないこともできます。Nodeクラスの破棄を実装するためのより良い方法は何ですか?
1)親にアクセスし、そこから自分自身を破壊します
2)信号を発し、後で親にそれを破壊させます
c++ - QObject 多重継承と演算子 new
この奇妙な質問で立ち往生
次のコードが g++ で問題ない理由
これはコンパイルできません
2番目も良くするために何をすべきかということですか?
PSまあ、すべてを別々のファイルに入れましたが、正常に動作します。Q_OBJECT マクロの問題だと思います。
qobject - Qt / C ++、QObject :: connect()は現在実行されている関数に影響しますか?
私は常にすべてのアプリケーションでQObject::connect()を使用していますが、プログラムが現在関数内にある場合の効果はわかりません。次のコードがあるとします。
シグナルが発信されると、QObject :: connectは関数「aFunction()」を離れて「zzz()」を実行すると思います。「aFunction()」の残りのコードはどうなりますか
ありがとう。
qt - Qt は Windows のどの部分に依存していますか?
Qt は GDI(+) を使用し、QObject から始めると思います。ActiveX コンポーネント、COM などを呼び出しますか?
たとえば、WebKit をフォームに入れると、ペイントに Windows の断片を使用する何かが起こっているのでしょうか?
私は、Qt が WINAPI、COM、および ActiveX をどれだけ使用/ラップしているかを調べようとしている初心者です。
qt - QObject.moveToThread(thread) スレッドがそのオブジェクトの子である場合
そのオブジェクトを親として(オブジェクトが生きている間スレッドを生き続けるため)子(スレッドQObject
)で(オブジェクト)を作成したかったのですが、この場合、スレッドを開始するシグナルが機能しません。QThread
object.moveToThread(thread)
単に:
- オブジェクトはスレッドを所有しています
- オブジェクトはスレッドに移動します
- シグナル開始スレッドが機能していません
どうしたの?
c++ - カスタム クラスを Q_PROPERTY として使用する
私は2つのクラスを持っていTestA
ますTestB
. TestA
伸びQObject
ます。私はそれをいくつかのようにセットアップしましたQ_PROPERTY
。
もちろん、適切なゲッターとセッターも作成しました。このクラスは問題なく動作します。
2 番目のクラスでTestB
、 を作成したいのでQ_PROPERTY
、TestA
でこれを行いましたtestb.h
。
そして、これはtestb.cpp
.
これをコンパイルしようとすると、次のエラー メッセージが表示されます。
誰かがこれを修正するために何をする必要があるか教えてもらえますか?
qt - QObject ベースのクラスには、それ自体へのキュー接続があります
私が取り組んでいるいくつかのソースコードを掘り下げていました。誰かがコード化した奇妙なステートメントを見つけました。ソース コードは、QML GUI を備えた GUI アプリケーションであり、QT 4.7.x を使用します。
以下のスニペットは、コア アプリケーション ロジックに属します。
オブジェクトがキュー接続を介してそれ自体に接続するのは奇妙です。これは、本質的に、オブジェクトが同時に異なるスレッドで「生きている」可能性があることを意味しますか?
一見、意味がわかりませんでした。そのような接続がもっともらしい、または必要な理由を誰か思いつくことができますか?. これでも機能しますか?