問題タブ [moc]
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++ - Q_OBJECT が原因で「v_table への未定義参照」の問題が発生する
C++
Eclipse で使用する GUI の作成に成功しましたQt
が、独自のボタン クリック イベントを割り当てる場合、クラスQ_OBJECT
のヘッダー ファイルにマクロを含める必要があると言われました。QWidget
QWidget
実行すると、ウィンドウが表示されなくなり、クラスのコンストラクタとデストラクタの両方でエラーが発生します。
ヘッダーファイルは次のとおりです。
また、コンストラクタとデストラクタは次のとおりです。
すべてのヘッダー ファイルがHEADERS
.pro ファイルのリストに表示され、ヘッダー ファイルにマクロをQMake
追加して実行しました。Q_OBJECT
コードの初期化:
表示されるエラー メッセージは次のとおりです。
qt - C-Make を使用して「ビルドされていない」ファイルをプロジェクトに追加する方法
これについて数時間検索していましたが、解決策が見つからなかったので質問しました。
約10のプロジェクトを含むプロジェクトのソリューションがあります。しかし、依存関係の問題に直面しています。私のプロジェクトの 1 つが moc ファイル (Cmake の 'QT4_WRAP_CPP' マクロによって生成された QT moc ファイル) を生成し、この moc ファイルを別のプロジェクトで使用したいと考えています。今のところ、cmake スクリプトを実行して解決策を取得した後、すべてのプロジェクトをビルドし、前のプロジェクトで生成された moc ファイルを必要とするプロジェクトは、リンク エラーについて文句を言います (当然のことながら、c-make でファイルを指定していないためです)。 ADD_EXECUTABLE セクションのスクリプト)。
私の質問は次のとおりです。「まだビルドされていませんが、」ファイルを Cmake のプロジェクトに追加して、その間に cmake スクリプトを作成する方法はありますか?
プロジェクトの cmake スクリプトの関連セクションは次のとおりです。
// X プロジェクト (このソリューションにもあり、Y プロジェクトの前にビルドされたもの) が「moc_X.cxx」という名前の moc ファイルを生成するとします。
それが十分に明確であることを願っています。前もって感謝します。
c++ - Qt metaObject->indexOfMethod は常に -1 を返します
Foo
クラスで宣言された関数が 1 つあります。
Q_INVOKABLE void setImageUrl(const QString &imageUrl);
ただし、そのメソッドの関数インデックスを取得できません。
私は何が欠けていますか?
c++ - QNetworkAccessManager 派生クラスを持つコンストラクターでの未定義の参照
Qtライブラリを使用する次のコードを使用してhtmlページを読み込もうとしています
コンパイル時に次のエラーが発生します。私が正しい方法で何をしていないのかわかりません。
「replyFinished」スロットを実装するために、QNetworkAccessManager から継承しました。シグナル「終了」は、すでに「QNetworkAccessManager」の一部です。
c++ - Qt 対アドイン - moc_*.cpp ファイルに対して .obj ファイルが生成されない
私は qt アドインで Visual Studio を使用しています。プロジェクトをビルドすると、プロジェクトのビルド ルールの結果として moc_*.cpp ファイルが生成されます。
moc_myfilewithqobject.cpp を生成した後、プロジェクトのビルドを続行し、リンク フェーズで LINK 2001 エラーが発生します。
ファイル moc_myfilewithobject.obj が見つからないためです。moc_myfilewithobject.obj は、生成後に moc_myfilewithobject.cpp がコンパイルされていないため、生成されません。ただし、プロジェクトに moc_myfilewithobject.cpp を含めると、コンパイルされ、問題が解決されます。しかし、これは手作業で行われるため、場合によっては問題が発生することがあります。moc_ .cpp ファイルを手動でプロジェクトに含めずに、この問題を解決する方法はありますか? 生成直後にmoc_ .cpp をコンパイルしたり、自動的にインクルードしたりしますか?
注: 新しいqtヘッダーがプロジェクトファイルに追加されたときに何が起こるかを確認するために、試用版の.hファイルをqtクラスとして追加しました。問題のあるファイルが所有していない行を追加しました:
したがって、それは本当の構成だと思いますが、以前にqtクラスとして作成したファイルにはそのような構成がありません。ただし、GeneratedFiles の Debug フォルダーを削除すると、Debug フォルダーを削除すると moc_ .cpp ファイルもプロジェクト ファイルから削除されるため、同じエラーが発生します。ここで質問があります: 生成された moc_ .cpp ファイルは削除してはいけません。それは本当ですか?
qt - 外部ヘッダーを見つけるように cmake/automoc に指示する方法
Qt Creator で作成された ui ファイルをロードする Qt ウィジェット C++ クラスがあります。クラスのヘッダーとソース ファイルは、2 つの別個のディレクトリにあります。クラスのヘッダーを見つけるように cmake/automoc に指示するのに問題があります。cmake は、C++ ファイルをモックする必要があることを認識しますが、類似のヘッダーを見つけることができません。
cmakeがファイルを見つけるのを助けるためにできることはありますか?
cpp とヘッダー ファイルの両方が同じディレクトリにあれば、すべて正常に動作します。これは、ヘッダーが他の場所にある場合にのみ発生します。
私のディレクトリ構造は
src/include/Foo/Bar.h には次のものがあります。
src/Foo/Bar.cpp ファイル:
src/lib/Foo の CMakeLists.txt は次のように設定されています。
cmake を実行すると、次のエラーが表示されます。
AUTOGEN: エラー: /automoc/src/lib/Foo/Bar.cpp ファイルには moc ファイル "moc_Bar.cpp" が含まれていますが、ヘッダー "Bar{.h,.hh,.h++,.hm,.hpp" が見つかりませんでした,.hxx,.in,.txx}" /automoc/src/lib/Foo/
c++ - Qt/Qml とメソッドのオーバーロード
Qml 内からオーバーロードされた C++ メソッドを呼び出し、その背後にある理由を理解しようとしているときに、Qt フレームワークの奇妙な動作に遭遇しました。QList<QVariant>
次のメソッドを持つ のようなクラスがあるとします。
Qml:
Qt はどういうわけか、ラップされたオーバーロードではなく、引数が空に設定されたvoid insert(int index, const QVariantList &items)
オーバーロードを呼び出すことにしました。items
null QVariant
QVariantList
void insert(int index, const QVariant &item)
QString
QVariant
次のように宣言の順序を変更すると、期待どおりに動作します。
宣言の順序と、それが呼び出し中にメソッドが解決される方法にどのように影響するかに関するQtフレームワークのドキュメントの下には何も見つかりませんでした。
誰か説明してくれませんか?ありがとうございました。