問題タブ [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++ - objectCast横向きキャスト
コード内のすべてのdynamicCastをQTのobjectCastに置き換えようとしています。しかし、私はちょっとした問題に遭遇しました。これが私のオブジェクトの階層です:
objectCastを使用して、DerivedをISizeまたはIAbilityに変換できます。ただし、コードの1つのポイントで、次の変換を実行したいと思います:Derived->ISize->IAbility。その最後のキャストでエラーが発生します。IAbilityはISizeとはまったく関係がないため、問題が発生する可能性があります。この時点でダイナミックキャストを行うことはできますが、したくありません。
c++ - QMetaObjectのQAbstractItemModel、自分で作成する必要がありますか?
Qtのリフレクションシステム上に構築された一連のデータモデルは自然な相乗効果のように見えますが、Qtライブラリ自体またはサードパーティからそのような獣を見つけたことがありません。そのようなものが存在するかどうか誰かが知っていますか?
QObjectsQMetaObjectプロパティのコレクションを編集および表示するためのデータモデルを探しています。これがQtライブラリに含まれていない理由は理解できますが(QMetaObjectのすべてをクリーンな方法で公開することはできないため)、大量のデータモデルを作成する必要がないことを望んでいます。 QObjectの階層とプロパティを表示するプロキシモデル。
c++ - QGraphicsScene から継承するクラスにシグナルを追加する
を継承するクラスにシグナルを追加したいQGraphicsScene
。
Q_OBJECT
これを行うと、Qt Creator はマクロを忘れたことを警告します。しかし、どこかで からQGraphicsScene
継承していないQObject
ので、クラス定義に入れるべきではありません。しかし、シグナルにはこのマクロが必要です。
から継承していないクラスにシグナルを追加するにはどうすればよいQObject
ですか?
boardgui.h
c++ - テンプレートから派生したC++クラスをQtのQ_OBJECTと混合することは可能ですか?
私のアプリケーションでは、次のクラス階層があります。
WordDictionaryクラスは、時間がかかる辞書を解析します。別のスレッド内から解析機能を実行していますが、解析中の現在の行番号に基づいて進行状況の更新を提供するために、GUIスレッドに時々信号を送ることができるようにしたいと思います。そのため、Q_OBJECTにします。基本クラスのディクショナリをQ_OBJECTにしようとしましたが、Q_OBJECTテンプレートがサポートされていないというメッセージが表示されました。WordDictionaryのみをQ_OBJECTとして残してマクロを削除すると、一般的な形式のエラーメッセージが大量に表示されます。
。\GeneratedFiles\ Release \ moc_dictionary.cpp(44):エラーC2039:'staticMetaObject': [ T=Word ]の'Dictionary'
のメンバーではありません
テンプレートから派生したWordDictionaryクラスをQ_OBJECTにするために、その中にテンプレート関数をハードコーディングして大量の定型コードを生成する以外にできることはありますか?
編集:テンプレート宣言を次のように変更します:
コードをコンパイルしました。私が愚かなことをしていないかどうか、そしてこれが正しく機能するかどうかはわかりませんが。
qt - Qt:QMimeDataのQObjectへのポインターを渡します
ドラッグアンドドロップ操作中にQMimeDataを使用してQObjectへのポインターを渡すことは可能ですか?QMimeDataには、データを保存するための次の関数のみがあります。
しかし、ポインターをQByteArrayに安全にエンコードする方法が見つかりません。
目標を明確にするために、ドラッグアンドドロップ操作中にモデルからターゲットウィジェットにQObjectへのポインターを渡す必要があります。
編集:私が理解していない限り、Mimeデータは、アプリケーションに依存しないデータをある場所から別の場所に渡すことです:URL、色、htmlコード。私の場合、アプリケーション内のリソースオブジェクトへのポインタを渡す必要があります。通常、この種のドラッグドロップにどのように対処しますか?
ありがとうアントン
qt - QObjectの子の並べ替え
QObject :: children()メソッドがqobjectの子を含むQObjectListへのconst参照を返すことに気づきました。constnessを捨てて、qSortでリストをソートするのは安全ですか?
ありがとうアントン
c++ - QObject (Qt Creator を使用した QT 4.7) でクラスを使用したコンパイラ エラー "collect2: Id returned 1 exit status"
現在のプロジェクトで次のような状況が発生しました: 次のコードを使用してコンパイラによって返された "collect2: Id returned 1 exit status":
コンパイラは次のように述べています。
... mingw32-make: ディレクトリに入る
C:/Entwicklung SVN/debug test/dataSenderReceiverExample' C:/Qt/2010.04/mingw/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory
C:/Entwicklung SVN/debug test/dataSenderReceiverExample' g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"......\Qt\2010.04\qt\ include\QtCore" -I"......\Qt\2010.04\qt\include" -I"..\dataSenderReceiver" -I"......\Qt\2010.04\qt\include\ActiveQt" -I"debug" -I"......\Qt\2010.04\qt\mkspecs\win32-g++" -o debug\main.o main.cpp main.cpp: 関数内 'int main(int, char **)': main.cpp:14: 警告: 未使用の変数 '派生' g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem ,console -mthreads -Wl -o debug\dataSenderReceiverExample.exe debug/main.o -L"c:\Qt\2010.04\qt\lib" -L../dataSenderReceiver/debug -ldataSenderReceiver -lQtCored4 mingw32-make[1]: ディレクトリを離れますC:/Entwicklung SVN/debug test/dataSenderReceiverExample' mingw32-make: Leaving directory
C:/Entwicklung SVN/debug test/dataSenderReceiverExample' ../dataSenderReceiver/debug/libdataSenderReceiver.a(derived.o):C:\Entwicklung SVN\debug test\dataSenderReceiver/derived.cpp:14: Derived_02 への未定義の参照Derived_02::Derived_02()' ../dataSenderReceiver/debug/libdataSenderReceiver.a(derived.o):C:\Entwicklung SVN\debug test\dataSenderReceiver/derived.cpp:15: undefined reference to
:: method()' collect2: ld が 1 の終了ステータスを返しました mingw32-make[1]: * [debug\dataSenderReceiverExample.exe] エラー 1 mingw32-make: * [debug] エラー 2 The Prozess "C:/Qt/2010.04/mingw/ bin/mingw32-make.exe" wurde mit dem Rückgabewert %2 beendet. Fehler beim Erstellen des Projekts dataSenderReceiverExample (Ziel: Desktop) Beim Ausführen des Build-Schritts 'Make'
助けてください!
c++ - Qt - QRadioButtons の繰り返し
私が取り組んでいる学校のグループ プロジェクトがあります。私のグループのメンバーは、75 個までのラジオ ボタンを持つウィンドウを作成しました。ボタンを押すと、それらすべてを強制的に「クリア」または「チェック解除」したいと考えています。
これを行う良い方法を知っている人はいますか?私は QObjectList を調べてきましたが、単純に QObjectList *children = new QObjectList(ui->groupBox->children()); を行うことはできません。QObjectListには次のメソッドがないように見えるため、forループを使用してそれらをループします..
私も次のようなことをしようとしました
しかし iterator は QObject なので、ラジオボタンのように setCheckable は存在しません。
考え/ヒントをいただければ幸いです。
編集:同様の名前の変数を反復処理する方法についてもヒントを示します。たとえば、すべてのラジオボタンに RadioButton_1、RadioButton_2 などの名前を付けます。
c++ - Qt - Q_OBJECT と #include
Q_Object
マクロを使用し#include <QObject>
ても同じ効果がありますか? 言い換えれば、それらは同じ目的のための2つの異なる方法ですか?
ありがとう。
qt - Q_OBJECT マクロとメタオブジェクト コード
このリンク: http://doc.trolltech.com/4.5/moc.html#mocは言う
moc ツールは、C++ ヘッダー ファイルを読み取ります。Q_OBJECT マクロを含む 1 つ以上のクラス宣言が見つかった場合、それらのクラスのメタオブジェクト コードを含む C++ ソース ファイルが生成されます。
メタオブジェクト コードとは
編集1
どのクラスで Q_OBJECT を書くべきかを知る方法は? 一例はシグナルとスロットですが、それを使用する必要がある他のケースはありますか?