QTableWidget を使用しています。cellChanged() シグナルで、sqlite データベースの行を追加または更新します。SQL ステートメントを実行した後、この行の項目にボタン/CellWidget を追加したいと考えています。これはセルの変更なので、もちろんアイテムの内容を変更してループを作成します。
このループを回避するにはどうすればよいですか?
QTableWidget を使用しています。cellChanged() シグナルで、sqlite データベースの行を追加または更新します。SQL ステートメントを実行した後、この行の項目にボタン/CellWidget を追加したいと考えています。これはセルの変更なので、もちろんアイテムの内容を変更してループを作成します。
このループを回避するにはどうすればよいですか?
データのコピーを別のコンテナーに保持するか、同じセルのユーザー定義ロールの下に保持することで、セルの内容が実際に変更されたかどうかを確認できます。
自由に使える別のアプローチがあります。SQL データベースの行を追加/更新する必要があるかどうかを制御するミューテックス変数 (ブール値など) を使用すると、SQL ステートメントの実行後に発行されるシグナルを無視できます。行にボタンを追加した後、ミューテックス変数を解放できます。
このアプローチは、自動更新アクションの周りのシグナル/スロットを切断/接続するよりもおそらく安価です。信号が頻繁にトリガーされる場合は、これが解決策である可能性があります。