問題タブ [qsqltablemodel]
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 - QSqlTableModel を所有し、QModelIndex の値に基づいて行全体に色を付けます
私は過去に QSqlTableModel を拡張しましたが、現在は行き詰まっています (結局まだ初心者です):
今、これはそれが行うことに対してうまく機能します。テーブルのフィールドを黄色に色付けしますが、代わりに行全体に色を付けたいと思います。したがって、このレコードはすでに (ソフト) 削除されていることが一目でわかります。
ご覧のとおり、すでに setData を呼び出してみましたが、役に立ちませんでした。(もちろん、この行の各インデックスに対してこれを行いますが、最初はうまくいかないので、そこでやめました。)
これに関するアイデアはありますか?Web をよく検索しましたが、行全体に色を付ける方法が見つからないようです。
qt - qsqltablemodel の互換性のないデータ型
ボタンといくつかの行編集とリストビューを備えた単純なフォームがあります。リストビューでは、ユーザーはアイテムを選択し、インライン編集でパラメーターを編集できます。
エラー:
python - 外部キーが更新されたときにpyqtリレーショナルテーブルが更新されない
スプリッター付きのウィンドウがあり、2 つのフレーム内に 2 つの異なるテーブルがあり、製品タイプは製品と関係があり、GUI は正常に動作しますが、製品タイプの名前を変更しても更新されません。製品テーブル、それはなぜですか? しかし、再起動すると変更が行われますか? pyqt モデルにデータベースの変更を強制的にチェックさせる方法はありますか?
python - QSqlTableModel の正規表現を使用したカスタム QAbstractItemDelegate
テーブルに入力されているデータを正規表現を使用して検証できるように、カスタム デリゲートを作成しようとしていますが、何らかの理由でコードがエラーをスローし続けます。適切な構造化された例はありますか?
これらは現在発生している 2 つのエラーですAttributeError: 'QLineEdit' object has no attribute 'set'
。QLineEdit.setText を使用して修正すると、正規表現が機能せず、任意の値を追加できます。
qt - qt 1 つのトランザクションでまとめて編集された複数の QSqlTableModels
PostgreSQL 9.3 データベースを使用する Qt アプリケーションにウィンドウがあります。ウィンドウは、新しいデータを表示、編集、および挿入するために使用されるフォームです。次のようになります。
そのビューには3つのSQLテーブルからのデータがあります。テーブルは外部キーに関連付けられています。
- 請負業者 (メイン テーブル) - 「個人データ」セクションにマッピング
- 連絡先 (contractors.ID への外部キーがあります)
- アドレス (contractors.ID への外部キーがあります)
したがって、私のウィンドウのクラスには3つのメインモデルがあります(+「個人データ」セクションと「アドレスデータ」セクションにテーブルを転置するための2つのプロキシモデル)。QSqlTableModel
これらのセクションと、 contactData セクションに使用しQSqlRelationalTableModel
ます。そのウィンドウを「通常」(一部の請負業者を表示するために)開くときは、単に請負業者の ID をコンストラクタに渡し、それを適切な変数に保存します。QSqlTableModel::setFilter(const QString & filter)
また、モデルごとにメソッドを呼び出し、適切なフィルタリングを設定します。そのウィンドウを「新規追加」モードで開くと、「-1」または「0」の値を ID 変数に渡すだけなので、データがモデルにロードされません。3 つのモデルすべてにQSqlTableModel::OnManualSubmit
editStrategyがあります。データを保存すると (適切なボタンをクリックしてトリガーされます)、トランザクションを開始します。そして、モデルを 1 つずつ提出します。personalData
挿入後にモデルの PK を取得する必要があるため (他のモデルの FK フィールドに設定するため)、モデルが最初に送信されます。モデルの送信が失敗した場合、QSqlError コンテンツを含む messageBox を表示し、トランザクションをロールバックしますメソッドから戻ります。処理中の最初のモデルでエラーが発生した場合、何も挿入されていないので問題ありません。しかし、最初のモデルが保存されたが、2 番目または 3 番目のモデルが失敗した場合、少し問題があります。そのため、前と同じようにトランザクションをロールバックし、関数から戻ります。しかし、データを修正して再度送信した後、ロールバックがあったことを認識せず、データを再度挿入する必要があるため、最初のモデルは送信しようとしません。そのようなモデルを再度提出する必要があることを通知するには、どうすればよいでしょうか? 現時点では、次のようなものになりました。
誰かがより良いアイデアを持っていますか? レコードを挿入する前に、レコードのバックアップを省略できるかどうかは疑問です。しかし、それらをモデルに「再追加」するためのより良い方法があるでしょうか? "setRecord"
、と"remoweRows" & "insertRecord"
コンボを使おうとしましたが、うまくいきませんでした。モデル全体をリセットするのが最も簡単なようです(クリアするとテーブル、フィルター、ソート、その他すべてが失われるため、再初期化するだけで済みます)
pyqt - QSqlRelationalDelegate を使用した QSqlRelationalTableModel が QAbstractProxyModel の背後で機能しない
QSqlRelationalTableModel の行と列を交換する必要があります。たくさん検索した後、行と列を反転するための小さなプロキシモデルを書きました。
それは部分的に働いています。テーブル内の関係は解決されて表示されますが、それらを選択するためのドロップボックスが失われます。また、それらを更新するにはどうすればよいですか?
これは、動作を再現する小さな自己完結型スクリプトです。
私のエラーはどこですか?モデルのシグナルとスロットに関係があるのではないかと強く疑っていますが、どれをどのように再実装するかについてのヒントは見つかりませんでした。
行と列を交換する別の簡単な方法はありますか?
編集:委任モデルが完全に機能していないことを明確にするために、部分的に機能しているだけです。