問題タブ [qt5.7]
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.
android - qt 作成者の出力により、x86 Android エミュレーターで QOpenGLShaderProgram エラーが発生する
QT/QML で記述された Android プログラムがあります。アプリを Arm Android Emulator にデプロイすると、動作します。しかし、アプリを x86 Andorid Emulator にデプロイすると、プログラムは動作しますが、画面は白くなります。表示するコンポーネントがありません。アプリケーションの出力は次のとおりです。
.... QOpenGLShaderProgram::uniformLocation( matrix ): シェーダー プログラムがリンクされていません W/libArizaMobil.so( 2651): (null):0 ((null)): QOpenGLShaderProgram::uniformLocation( color ): シェーダー プログラムがリンクされていませんW/libArizaMobil.so( 2651): (null):0 ((null)): QOpenGLShaderProgram::uniformLocation( textureScale ): シェーダー プログラムがリンクされていません W/libArizaMobil.so( 2651): (null):0 ((null) )): QOpenGLShaderProgram::uniformLocation( dpr ): シェーダー プログラムがリンクされていません ......
qtcpserver - QUdpSocket を使用して QTcpServer に接続できますか?
私はネットワーキングの世界に非常に慣れていないので、現在 newConnection シグナルで動作している QTcpserver を持っていますが、 QTcpServer で QUdpSocket を使用できるかどうか疑問に思っていましたか? これはまったく可能ですか?
qt - QOpenGLWidget は update() で再描画を停止します
の 4 つの個別のインスタンスを持つ階層を含むカスタム QDialog がありますQOpenGLWidget
。
これらQOpenGLWidget
の はそれぞれ独自の GL コンテキストを持ち、異なるシーンをレンダリングします。
update()
私は定期的にそれぞれに(それらを再描画するための推奨される方法)を呼び出すループを持っています(QOpenGLWidget
より定期的に焦点を当てたものですが、これは問題とは無関係だと思います)。
私の問題は、最終的にランダムな時間が経過した後 (すぐに発生する場合もあれば、10 分以上発生しない場合もあります)、が呼び出されたQOpenGLWidget
ときに 1 つ以上の が再描画を停止することです。update()
QOpenGLWidget
ただし、ストールのサイズを変更すると、単一の再描画イベントがトリガーされることに気付きました。
update()
すべての で呼び出されているデバッガーで確認できますQOpenGLWidget
が、これは停止したウィジェットに対してトリガーpaintGL()
(再描画メソッド) することはありません。再描画をトリガーしているかどうかに関係なく、updatesEnabled()
常に true を返します。update()
また、QT はエラーや警告をコンソールに出力しません。
これらのウィジェットを含むダイアログは、トリガーするスレッドとは別のスレッドで実行されているため、(独自のイベント ループを作成せずに) 直接update()
呼び出すことはできません。repaint()
QApplication::sync()
トリガーするメソッドに追加してupdate()
も違いはありません。
使用可能な RAM が少ない場合に発生する傾向がありますが、RAM が 800 MB 程度であり、アプリケーションが使用する RAM はそれよりも大幅に少なくなります。だから私の腸はおそらく間違っています。
私はQTの大規模なユーザーではないので、ここから問題をさらにデバッグする場所がよくわかりません。提案があれば歓迎します。エラーの再現性には、不明な時間の待機と、より複雑でマルチスレッドのプロジェクトが含まれていることを考えると、コードの小さなスニペットでバグを再現しようとすることに大きなメリットがあるとは想像できません。
アップデート:
を呼び出すときにまったく同じ問題が発生しupdate()
ましたQGraphicsScene
が、毎回数回の更新後に発生していました。
代わりにビューポートを更新するこの提案が見つかりviewport()->update()
、問題が修正されたようです。
QOpenGLWidget
ただし、同じ方法で更新するビューポートがありません。
qt - QObject::connect: タイプ 'QModbusDevice::State' の引数をキューに入れることができません
マルチスレッド アプリケーションを開発しています。modbus で n 個のデバイスをインスタンス化する必要があります。そこで、N 個のスレッド (ServiceSlots) をインスタンス化するコントローラー (ServiceSM) を作成しました。
デバイスはさまざまなので、デバイスの種類ごとに「ドライバー」を作成する必要がありました。ドライバーの 1 つが QModbusClient クラスを使用するため、デバイスの種類を管理するコントローラーを作成しました。
ステート マシンの動作とデバイスへの接続をテストするために、グラフィカル インターフェイスで実行するサンプル コードを作成しました。
分かりやすくするために重要でないコードのスニペットをいくつか削除しました
MD4040driver クラスのコードでこのセクションを実行すると、次のメッセージが表示されます。グラフィカル インターフェイスで DeviceDriver クラスをインスタンス化すると、完全に機能します。スレッド内でインスタンス化すると問題が発生します。
通話時
MD4040drive::sm_conn() - 接続してみてください - これは私のメッセージです エラー:
QObject::connect: タイプ 'QModbusDevice::State' の引数をキューに入れることができません (qRegisterMetaType() を使用して 'QModbusDevice::State' が登録されていることを確認してください)。
QObject: 別のスレッドにある親の子を作成できません。(親は QTcpSocket(0x24a6ce8)、親のスレッドは ServiceSlots(0xea66488)、現在のスレッドは QThread(0x2418a78)
QObject: 別のスレッドにある親の子を作成できません。(親は QTcpSocket(0x24a6ce8)、親のスレッドは ServiceSlots(0xea66488)、現在のスレッドは QThread(0x2418a78)
私のコード(部分)を休ませる
devicedriverviewgui.h devicedriverviewgui.cpp
serviceslots.h serviceslots.cpp
devicedriver.h devicedriver.cpp
md4040drive.h md4040drive.cpp
c++ - ビデオがスムーズでない OpenCV 2.4 および Qt 5.7
OpenCV を使用してビデオからフレームを読み取り、QWidget に表示するビデオ プレーヤーの作成に苦労しています。
これは私のコードです:
QWidget側では、この画像を使用してpaintEvent
.
ここでは、パラメーターsleep
が重要な役割を果たしていないように見えます。(より多くの FPS を取得するために) 減らすほど、ビデオは滑らかではなくなります。
ここで私に残された唯一のことは、そのアプローチが機能しないためにあきらめたことですが、念のためにもう一度ここで尋ねたいと思いました-私はここで何か間違ったことをしていますか?
c++ - 最後に作成された Qt3DCore::QEntity が常にシーン ビューの前景にあるのはなぜですか?
シーンで、Qt3D
3D オブジェクトが空間位置に従って表示されません。QEntity
カメラをどのように回転させても、最後に作成されたものは常に前景にあります。私の例では、カメラ設定で指定されたデフォルトのビューでQEntity
redBigSphere
空間的に後ろに配置されていても、 は常に前景にあります。smallGreenSphere
main.cpp
:
(結果の画像: http://imgur.com/a/A7tIW )
インスタンス化の順序を入れ替えると、smallGreenSphere
常にフォアグラウンドになります。
(結果の画像: http://imgur.com/a/fygTU )
インスタンス化の順序に関係なく、正しい 3D ビューを取得するにはどうすればよいですか?
私はQtとQt3Dが初めてなので、回答でこれを考慮してください。(私の評判が低いため、画像へのリンクのみを提供できます。)
macos - Qt Mac OS X: QMAKE_BUNDLE_DATA および/およびカスタム ターゲットを使用
Qt デスクトップ アプリケーションのビルドの問題に取り組んでいます。QT 5.7を使用しています。
私の知る限り、qt mac アプリケーションの場合、QMAKE_BUNDLE_DATA を使用してすべてのリソースを .app にバンドルする必要があるため、それを使用しました。また、.app バンドルにコピーする必要があるいくつかの .rcc ファイルを生成する外部コマンド (rcc) を実行する make ファイルのカスタム ターゲット を定義しました。
問題は、 .app バンドルが .rcc ファイルを見つけられなかったことを示唆するエラーをコンパイル時に受け取り、.rcc ファイルが生成されなかったことです! ただし、QMAKE_BUNDLE_DATA を使用せずにカスタム ターゲット (creatercc) をテストしたところ、.rcc ファイルが生成されたため、.rcc を作成する前に .app バンドルを作成する必要があると結論付けたため、バンドルは .rcc ファイルを見つけることができませんでした。
問題は、事前定義されたターゲットが QMAKE_BUNDLE_DATA の前に最初に実行され、事前定義されたターゲット コマンドが実行を終了するまで QMAKE_BUNDLE_DATA が待機するようにする方法です。ありがとう
c++ - Qt アプリケーションがタスク バーにあるが起動しない
問題のアプリケーションは、Qt 5.7 と VS2015 を使用して作成されました。奇妙な問題が先週発生し、私は必死にこれを整理しようとしています. 十分なロギングがあると思いましたが、そうではありません。その後も、この問題はユーザーのマシンのいくつかでのみ見られました。
すべての Windows マシンで展開が正常に機能することを確認しており、アプリケーションは先週までこれらのマシンで正常に動作していました。現在、開くことを拒否していますが、タスクバーに表示されています。
ユーザーのマシンには、VC++ 2015 という前提条件がインストールされています。必要なすべての Qt DLL も存在します。アプリケーションは、他のすべてのマシンで問題なく動作します。したがって、問題はマシンにあると思いますが、2 つの OS (Windows 7 および Windows 2012) の再起動、アプリケーションのクリーンな再インストール、異なるバージョンはすべて失敗し、同じ問題が表示されます。
今の私の質問は
- アプリケーションの起動時にすべての依存関係をログに記録する方法はありますか (依存関係ウォーカーを数回使用しましたが、ログと同様のことをしたかったのです)。
- これを診断して、ウォッチドッグ アプリケーションまたはウイルス対策がこれを引き起こしているかどうかを調べるにはどうすればよいですか? 問題を診断するためにウイルス対策をオフにするようにユーザーを説得しようとしています。
windeployqtを使用してすべての依存関係を取得し、テスト中に VC++ 2015 などの必要な DLL の残りを見つけました。また、ビルド中に依存関係 walkerを使用しました。qt アプリケーションが起動しない、qt アプリケーションの起動に関する問題などの質問はすべて、DLL が見つからないことを示しています。アプリケーションはほとんどすべての Windows マシンで正常に動作するため、これが当てはまらないことはわかっています。したがって、依存関係をログに記録するための助けと指示、およびこの種の状況を診断する方法も必要です。
情報が不足している可能性がありますので、お知らせください。私はさらに調査しており、追加情報が得られたら投稿を更新します。
また、main() 関数内に多くのログを追加しようとしています。何かをキャッチできるかどうかを確認します。