問題タブ [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++ - QObject::connect からの詳細情報
障害が発生した場合に詳細な障害情報を取得する方法はありQObjet::connect
ますか?
返されたブール値は、失敗の理由に関する情報を提供しません。
例外がJavaと同じようにC++で広く使用されていることを願っています。
qt - In Qt, how do I use Q_OBJECT slots and signals with multiple inheritance?
I looked through the related questions and couldn't find anything that addresses exactly what I was talking about, so let me describe.
I have a class, let's say foo that needs to have its own slots and signals, but also needs to inherit from QXmlDefaultHandler (sounds rather odd, but I encountered this situation when trying to use QHttp to read a website directly into a QBuffer).
This code, if accompanied by a cpp to connect bar to a signal somewhere else, will not compile. You'll get errors about some members of QObject not being a member of QXmlDefaultHandler. Additionally, you can't move Q_OBJECT or else you get vtable errors for not implementing some things (go on! try it!).
please see my answer for the (very simple) fix. I will entertain voting you as the accepted answer if I think you explain it better than I do.
edit: for you c++ and Qt vets, please post an answer if you can explain it better. i spent quite a bit of time looking this info up, so please help someone else if you can do better than me.
qt - QtでQObject派生クラスタイプをチェックする適切な方法
私には2つのクラスがあるとしましょう:
では行きます
では、「a」がクラスAのインスタンスであり、「b」がクラスBのインスタンスであることを確認するにはどうすればよいですか?
現在、私は次のようなことをしています。
もっと良い方法はありますか?
qt - QtのコンボボックスにQObjectを追加
MyClass など、作成したカスタム クラスがあります。次に、以下のコンボ ボックスの 2 番目のパラメーターとして MyClass の参照への参照を追加する方法:
this->ui->comboBox->addItem("item-1", );
目的は、アイテムが変更されたときに発生することです。MyClass の特定のクラス インスタンスを取得し、それに応じて処理したいと考えています。
qt - QObject の子の順序 (戦略の質問)
私のプロジェクトの 1 つで、QObject の親/子機能を利用してツリーを構築する QObject 派生オブジェクトのツリーがあります。
シグナルとスロットを利用し、Qt の保護されたポインターを使用し、親オブジェクトが削除されたときに子を削除することを期待しているため、これは非常に便利です。
ここまでは順調ですね。残念ながら、私のプロジェクトでは、子の順序を管理/変更する必要があります。QObject は、その子の順序を変更する手段を提供しません (例外: QWidget の raise() 関数 - ただし、この場合は役に立ちません)。だから今、私は子供たちの順序を制御する戦略を探しています。いくつかのアイデアがありましたが、それらの長所と短所についてはわかりません。
オプション A:カスタム ソート インデックス メンバー変数
int m_orderIndex
メンバー変数をソートキーとして使用し、sortedChildren()
このキーでソートされた QObjects のリストを返すメソッドを提供します。
- 既存のオブジェクト構造に簡単に実装できます。
QObject::children()
メソッドがオーバーライドされると問題があります - アイテムの順序が変更されたときにループ中に問題が発生し、デフォルトの実装よりもコストがかかります。- すべてのソートキーが等しいか、0/デフォルトの場合、QObject オブジェクトの順序にフォールバックする必要があります。
オプション B:子の冗長リスト
で子の冗長リストを維持し、QList
作成および破棄されたときに子を追加します。
- 追加/削除されたオブジェクトの高価な追跡が必要です。これは基本的に、2 番目の子/親の追跡と多くのシグナル/スロットにつながります。QObject はすでに内部的にこれをすべて行っているため、もう一度行うのは得策ではないかもしれません。また、子供の順序を変更するなどの単純なことに、多くの肥大化が追加されているように感じます.
- 子の QList は必要に応じて変更できるため、優れた柔軟性。
- 子が QList に複数回存在することを許可するか、またはまったく存在しないことを許可します (たとえそれがまだ QObject の子である場合でも)。
オプション C: ...?
特に自分のプロジェクトでこれをすでに解決した人からのアイデアやフィードバックは大歓迎です。明けましておめでとう!
qt - アプリケーションで作成されたすべての QObjects のリストを取得します
アプリケーションで作成されたすべての QWidget のリストを取得するには、単にQApplication::allWidgets()
.
ドキュメントを読みましたが、すべての QObjects のリストを取得するためのこのようなものは見つかりませんでした。アプリケーションが QWidget ではないスタンドアロンの QObject を作成する場合、そのような機能を使用する必要はありません。
そのようなリストを取得する方法はありますか?
qt4 - プロパティが QObject で変更されたときに通知を受ける方法はありますか?
まず、Qt 4 ライブラリと C++ を使用しています。
プロパティ(動的またはその他)が変更されたときに通知(シグナル、イベント、?)する方法はありQObject
ますか?
QObject
Qt4 ライブラリの一部であるため、クラスを変更できません。詳細はQObject
こちら.
qt - Qt:自分のQWidgetを正しい方法でセットアップする
Qtでは、独自のQWidgetをセットアップしようとしているので、メモリ管理などの理由ですべてが正常に機能するはずです。しかし、ポインター、ヒープ、スタックではうまくいかないようです。いくつかのオブジェクトを含むQListを持つウィジェットMyWidgetがあります。すべてを正しく設定する方法がわかりません。
あなたは私のコードを以下に見ることができます、そして私はこれに関していくつかの質問があります:
instace変数リストはヒープ上に作成されますが、スタック上に作成する方がよいでしょうか?
私のリストにはポインタがありますが、スタック上にオブジェクトを作成してリストに追加する方がよいでしょうか?(リストにポインタがまったくないようにするため)
オブジェクトをリストに追加すると、オブジェクトは自動的に親としてリストを取得しますか?リストを削除すると、リスト内のすべてのオブジェクトが削除されますか?
使用しようとしているforeachループが機能していません。「この操作では、「int」ではなく、ポインター/配列型が必要でした」というメッセージが表示されました。
私のコードでは、リストからオブジェクトをパラメーターとして受け取る他のウィジェットを作成したいと思います。私のようにそれを行う正しい方法ですか?MyOtherWidgetのインスタンスメソッドは次のようになります。MyOtherWidget(MyObject * myObject、QWidget * parent)
ご協力いただきありがとうございます!私はQtとC++を初めて使用するので、正しい方向に導いていただければ幸いです。簡単に、メモリリークが発生せず、必要なだけメモリを使用しないように、これを正しい方法で設定するにはどうすればよいですか。同じことをどのように設定しますか?
これは私のコードです:
MyWidget.h:
MyWidget.cpp:
c++ - Qt リンカ エラー:「vtable への未定義参照」
これは私のヘッダーです:
これは私のクラスです:
リンカー エラーが発生します。
- これは、仮想メソッドが実装されていないことを意味します。しかし、私のクラスには仮想メソッドがありません。
- 原因かと思いベクターをコメントアウトしましたが、エラーは消えませんでした。
- は
Message
複雑struct
ですが、代わりに使用int
しても問題は解決しませんでした。
c++ - QObject から継承しながら QSharedData を使用できますか?
Qt でプライベート実装 (暗黙の共有) を非表示にするにはどうすればよいですか?
Employee.h ヘッダーに次の Employee.cpp があります。
しかし、EmployeeData をプライベート パーツ、たとえば Employee.cpp に移動すると、次のエラーが表示されます: エラー: 不完全な型 'struct EmployeeData' の無効な使用</p>
ただし、定義を次のように変更すると、正常に動作します。
したがって、 QObject から継承しながら QSharedData を使用できますか?