問題タブ [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.
qt - QGraphicsSceneクラスでのマウスの動きの追跡
QGraphicsSceneをサブクラス化し、マウス移動イベントを処理するためのメソッドmouseMoveEventを追加しました。GraphicsViewの上に定規を作成し、定規にマウスの動きを追跡させました。QGraphicsScene :: mouseemoveEventで、ルーラーウィジェットのmouseMoveEventを明示的に呼び出します。目的は、現在のマウスの位置を定規に知らせることです。
マウスを動かしてもQGraphicsScene::mousemoveEventが呼び出されないようです。ただし、マウスの左ボタンを押しながらボタンを押したまま動かすと、動作させることができます。これは私が見たいものではありません。ビューの上にマウスを置いてマウスを動かすたびに、このメソッドが呼び出されるようにしたいと思います。
回避策はありますか?
c++ - QObject 継承 Ambiguous Base
プログラムがフォーカスを取得したり失ったりしたときにタイマーを停止および開始する単純なクラスがありますが、すべてのシグナルスロット接続で QObject is Ambiguous base of MyApp というエラーが発生します。関連するコードは次のとおりです。
ここに私の(乱雑な)Main.cppがあります:
MyApp.cpp:
pyqt - QProgressBar をループするとエラー >> QObject::installEventFilter: Cannot filter events for objects in different thread
この質問は、さまざまな形式で何度も尋ねられたようですが、私のコードに関連する解決策を見つけることができませんでした。
プログラムを実行すると表示されます
QObject::installEventFilter: 別のスレッドにあるオブジェクトのイベントをフィルタリングできません。
これにもかかわらず、コードは最初は機能しますが、しばらくすると爆発し、python は動作を停止したというエラーを出します。
私のコードは次のとおりです。
qt - コピーコンストラクターが宣言された後でも、QObjectは例外を返します
qtスクリプトのサンプルコードを書こうとしています。QObjecy
コピー コンストラクターでを宣言するとき、私は正しいことをしていると思いました。また、自由に=
演算子を宣言しました。しかし、このコードは私に
エラー。
MyClass
aである aを次のように宣言していQObject
ます。私は、私がここで何をしているのかを誰かが見ることができるという事実を認識しています.
ヘッダー:
私のソースクラスは次のとおりです。
qt - QStandardItemModel を QVariant に変換します
QStandardItemModel 派生オブジェクトを PythonQt に送信しようとしていますが、どのように送信する必要があるかについて少し混乱しています。boost::python を使用していたとき、boost::noncopyable のようないくつかのコントロールを使用して、このオブジェクトを再作成するのではなく、Python と共有していることを確認しました。また、python 内から python へのブースト共有ポインターを提供するための構造もありました。
class Scene : public boost::enable_shared_from_this<Scene>, public QStandardItemModel
ただし、PythonQt では、何が利用できるのかわかりません。この関数call
は、すべての関数パラメーターに対して QVariantList を取ります。
QVariant PythonQt::call(PyObject* object, const QString &callable, const QVariantList &args = QVariantList))
私が今混乱しているのは、QVariant を介してオブジェクトを python に取得する方法です。QStandardItemModel から派生したので、既に登録されていると思いました
しかし、これにより次のエラーが発生します。
'qt_metatype_id' : is not a member of 'QMetaTypeId<MyObject>'
クラスを宣言した後に登録しようとしましたが、これは別のエラーをスローします。
Q_DECLARE_METATYPE を追加するヘッダーと、常に QStandardItemModel から派生するがそれ以外は無関係なクラスを持つ別のヘッダーで、実際に 2 回エラーが発生します。
Q_DECLARE_METATYPE は、このオブジェクトを QVariant に変換する正しい方法ですか?
BOOST_PYTHON_MODULE(シーン) { class_("シーン"); }
qt - QtのdeleteChildren()中に子が削除されないようにするにはどうすればよいですか?
Logger
ユーザーが仮想関数をサブクラス化してオーバーライドできるようにするロギングインターフェイスがあるlog()
ので、ユーザーは独自のロガーを作成できます。登録されているすべてのロギングメソッド(コンソール、syslog、ウィジェットなど)を追跡するマネージャーがあります。
ログを表示するQListWidgetロガーを作成しました。残念ながら、これはロギングマネージャによって所有されており、QObjectであるため、MainWindowの子でもあります。これにより、2つのオブジェクトがアプリケーションのクローズ時にそれを削除しようとします。
初めてQObjects->deleteChildren()
呼び出され、削除されます。次に、Loggingmanagerが再試行してクラッシュします。
特定のQObjectが破壊されるのを防ぐにはどうすればよいdeleteChildren()
ですか?それは悪い考えですか?
window - QML 内から新しいウィンドウを作成するにはどうすればよいですか?
QmlApplication のメイン QML ウィンドウの子ウィンドウとして、まったく新しいウィンドウ インスタンスを作成する方法はありますか?
Q_OBJECT
new 内で新しいウィンドウをインスタンス化するためだけにクラスを作成しないようにしていますQmlApplicationViewer
。
c++ - Qt の C++ のインターフェイス
私の質問は、私のインターフェイスが QObject から継承できるか、またその方法を教えてください。C++ のインターフェイスは仮想メソッドのみを含む単純なクラスであり、通常、クラスはスーパークラスから継承できることを知っています。しかし、そうすると、あいまいな QObject 参照のためにエラーが発生します。シグナル/スロット機能をプラグインに追加するには、QObject を継承する必要があります。
私のインターフェース
プラグイン ヘッダー ファイル
実装ファイル
エラーが発生します
c++ - mini2440 でアプリケーションがクラッシュする
mini2440 (FriendlyARM Board) 内で Qtopia 2.2.0 アプリケーションを実行しています。これまでのところ、アプリケーションのサイズは 128kb ですが、さらに大きくなります。全部で 45 ~ 50 個の (ソース + ヘッダー) ファイルがあります。特定のファイルにコード セグメントを追加すると、アプリケーションがクラッシュします。コードを他のファイルに移動してそのファイルを含めてみましたが、それでもうまくいきませんでした。最初は、これはアプリケーションのサイズに問題があるのではないかと考えましたが、.cpp と .h ファイルをいくつか追加すると、アプリのサイズは大きくなりますが、問題なく動作します。UI と対話するメイン ファイル (クラス) は Qt/C++ で記述され、他のすべてのファイルは C & C++ (通常の .h & .cpp) です。問題が何であるかをデバッグすることはできません。手がかりをいただければ幸いです。
qt - QObject :: findChild()を子のみに指示するように制限する簡単な方法はありますか?
質問はタイトルにあります。これを行う方法を示唆するドキュメントには明らかなものが見つかりません。再帰的な子の検索メソッドを使用し、各子の親ポインターを順番にテストして、非直接の子を除外する必要がありますか?
ちなみに、ドキュメンテーションは「直接の祖先」を参照しているようで、それによって「直接の子孫」を意味すると思います。
(編集:私は単純さを探しているので、答えはfindChild()
メソッドを使用する必要はありません。)