問題タブ [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.

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

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の例はそのような考えをカバーしていません..

ありがとう!

アダム

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

qt - QObject が間接ベースにすぎないクラスに QObject 親を設定できないのはなぜですか?

を継承するクラスBatchItemQObject、から継承するいくつかのクラスがありBatchItemます。

から継承するクラスの例BatchItem:

そして、これは対応する .cpp です:

しかし、コンパイルしようとすると、次のエラーが発生します。

もちろん、これは正しいことがわかります。QObjectの間接ベースのみですVideoBatchItem。しかし、なぜそれが問題なのですか?QAbstractScrollAreaから継承しQFrame、さらにから継承するなどの場合も同様ではないQWidgetでしょうか。から間接的に継承するだけQWidgetですが、それらはすべて親としてa を取ります。残念ながら、ドキュメントにも、名前付きウィジェット クラスの .cpp ファイルにも、その答えは見つかりませんでした。QAbstractScrollAreaQWidget

親を渡すことができないQObjectため、派生したバッチ アイテムを破棄するために Qt の親子システムを使用する方法はありますか?

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

qt - QObject::QObject(QObject parent=0) は、このコンテキストではプライベートです

私はメッシュと呼ばれるクラスを持っています。そのオブジェクトを追跡したい。そのため、新しいメッシュが作成されるたびに、信号が必要でした。そして、すっごく追加しました

すべてのメソッドをスロットとして作成し、c-tor meshCreated にシグナルを追加しました。しかし、ここから私の長年の苦痛が始まりました。なんと、タイトルのエラーが出るようになりました。//コードのすべての行の前に追加されたすべての行にコメントを付けたとしても、それでも同じことが言えます。どうすればこれを修正できますか?

実際のコード

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

c++ - QObjectを自己削除する最適な方法

NodeとNodeContainerの2つのクラスがあります。

ノードは親を持つことも持たないこともできます。Nodeクラスの破棄を実装するためのより良い方法は何ですか?

1)親にアクセスし、そこから自分自身を破壊します

2)信号を発し、後で親にそれを破壊させます

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

c++ - QObject 多重継承と演算子 new

この奇妙な質問で立ち往生

次のコードが g++ で問題ない理由

これはコンパイルできません

2番目も良くするために何をすべきかということですか?

PSまあ、すべてを別々のファイルに入れましたが、正常に動作します。Q_OBJECT マクロの問題だと思います。

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

qobject - Qt / C ++、QObject :: connect()は現在実行されている関数に影響しますか?

私は常にすべてのアプリケーションでQObject::connect()を使用していますが、プログラムが現在関数内にある場合の効果はわかりません。次のコードがあるとします。

シグナルが発信されると、QObject :: connectは関数「aFunction()」を離れて「zzz()」を実行すると思います。「aFunction()」の残りのコードはどうなりますか

ありがとう。

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

qt - Qt は Windows のどの部分に依存していますか?

Qt は GDI(+) を使用し、QObject から始めると思います。ActiveX コンポーネント、COM などを呼び出しますか?

たとえば、WebKit をフォームに入れると、ペイントに Windows の断片を使用する何かが起こっているのでしょうか?

私は、Qt が WINAPI、COM、および ActiveX をどれだけ使用/ラップしているかを調べようとしている初心者です。

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

qt - QObject.moveToThread(thread) スレッドがそのオブジェクトの子である場合

そのオブジェクトを親として(オブジェクトが生きている間スレッドを生き続けるため)子(スレッドQObject)で(オブジェクト)を作成したかったのですが、この場合、スレッドを開始するシグナルが機能しません。QThreadobject.moveToThread(thread)

単に:

  1. オブジェクトはスレッドを所有しています
  2. オブジェクトはスレッドに移動します
  3. シグナル開始スレッドが機能していません

どうしたの?

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

c++ - カスタム クラスを Q_PROPERTY として使用する

私は2つのクラスを持っていTestAますTestB. TestA伸びQObjectます。私はそれをいくつかのようにセットアップしましたQ_PROPERTY

もちろん、適切なゲッターとセッターも作成しました。このクラスは問題なく動作します。

2 番目のクラスでTestB、 を作成したいのでQ_PROPERTYTestAでこれを行いましたtestb.h

そして、これはtestb.cpp.

これをコンパイルしようとすると、次のエラー メッセージが表示されます。

誰かがこれを修正するために何をする必要があるか教えてもらえますか?

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

qt - QObject ベースのクラスには、それ自体へのキュー接続があります

私が取り組んでいるいくつかのソースコードを掘り下げていました。誰かがコード化した奇妙なステートメントを見つけました。ソース コードは、QML GUI を備えた GUI アプリケーションであり、QT 4.7.x を使用します。

以下のスニペットは、コア アプリケーション ロジックに属します。

オブジェクトがキュー接続を介してそれ自体に接続するのは奇妙です。これは、本質的に、オブジェクトが同時に異なるスレッドで「生きている」可能性があることを意味しますか?

一見、意味がわかりませんでした。そのような接続がもっともらしい、または必要な理由を誰か思いつくことができますか?. これでも機能しますか?