問題タブ [qabstracttablemodel]
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.
python - QTableViewでQItemDelegateとして使用されているときにQLineEditにテキストを設定する方法
以下のコードは、単一のQTableView
. のインスタンスがQAbstractTableModel
作成され、モデルとして割り当てられます。最後に、QItemDelegate
が に割り当てられQTableView
ます。
列 0 には が入力されていQLineEdit
ます。列 1 にはQComboBox
. ただしQLineEdit
、カスタム テキスト値が割り当てられていQLineEdit
ても、空白のままです。QComboBox
「Somewhere」、「Over」、「The Rainbow」の3つのアイテムを正しく取得した場合は発生しません。
列 0 の QLineEdits にテキストを事前入力するにはどうすればよいですか?
後で編集:
トリックをしてくれたFabioに感謝します。
作業コードは以下に掲載されています。
Delegate.createEditor()
メソッド内で値の割り当てを処理する代わりに、代わりに実装する必要がありDelegate.setEditorData(editor, index)
ます。内部でsetEditorData
は、次の両方を取得できます。index.column()
また、引数を使用してモデルで使用される変数index.row()
にアクセスすることもできますself.items
index
value = index.model().items[row][column]
python - QTableViewがクリックされたときにデリゲートアイテムを取得する方法
以下のコードは、単一のQTableView
. QItemDelegate
PersistentEditor として割り当てられています。作成されるエディタには 2 種類ありQLineEdit
ます。 は列 0 用に作成され、「QComboBox」は列 1 用に作成されます。
をクリックするtableView
と、両方のエディターのインスタンスを取得したいと思います: LineEdit のインスタンスとコンボボックスのインスタンスです。これを達成する方法は?
c++ - Qt TableView model setData() crashes application
I am learning Qt and I am developing Minesweeper alike game now.
For displaying game board I am using QTableView with my custom model that extends QAbstractTableModel
.
Displaying data from model works well. I have overloaded QVariant data(const QModelIndex &index, int role)
and all cells are displaying their "content" properly.
Now I would like to handle game board clicks and pass any data to the model.
I have overloaded setData() function:
and handled TableView clicks:
but tableView->model()->setData()
causes application to crash:
Am I doing something wrong? Is this a good way to achieve changes in model on mouse click events?
c++ - QAbstractTableModel の基になるデータを完全に変更するには?
初めての投稿になりますが、プログラミングを始めてから、たくさんの方々にお世話になりました。
私は Qt を初めて使用し、現時点で最初のプロジェクトを作成しようとしています。私の質問は、モデル、基になるデータ、およびビューの間の通信についてです。
私は最初にバックグラウンドのもの (データの保存など) を GUI から分離しました。今、私はテンプレート クラスを持っており、から継承Matrix
するテンプレート クラスを作成しました。これは正常に機能しています。つまり、テーブルを編集でき、ビューとモデルのデータで値が更新されます。MatrixModel
QAbstractTableModel
ここで私の質問: 新しいメソッドを作成せずにモデル内のデータを変更するにはどうすればよいですか?
メインウィンドウ.cpp:
m.transpose()
モデルの基になるデータを呼び出す方法はありますか? 変更するとどうなりm
ますか? モデルのデータに影響しますか? 私は多くのことを試しましたが、何もうまくいきませんでした。1 つの「問題」は、テンプレート クラスを使用しているため、標準のシグナル/スロット構文を使用できないことです。
私の最後の試みは、モデルで更新クラスを作成することでした:
そして、それをボタンとラムダ関数に接続しようとしました:
しかし、ボタンを押すとプログラムがクラッシュするようでした。私は本当に必死です xD あなたが私を助けてくれることを願っています. 詳細が必要な場合は、お気軽にお問い合わせください^^
よろしくお願いします
デニス
編集1:これまでのところ、(あなたの助けを借りて:))、モデルにマトリックスの関数を再度記述し(transpose()など)、そこからデータの変更を発行する必要があることを理解しました(emit dataChangedまたはbeginResetModel(を使用) )...) しかし、データの基礎となるモデルを変更することはできません。私が書いたら
これはメインウィンドウで:
モデル内のこれ:
移調ボタンを押すと、プログラムがクラッシュします。行にコメントすると
アウト、すべてが機能します。
編集 2: データ ストレージに問題がある可能性があるため、コピー コンストラクターとマトリックス クラスのプライベート変数を次に示します。
python - コンテンツを削除せずに PyQt QAbstractTableModel のテーブルを編集する
私がこれまでに行ったこと:
編集可能なセルを含むカスタムQAbstractTableModel
( QTableView
-Widget で使用) を実装しています。これらのセルのプロパティは、flags()
次のようなメソッドで指定されます。
最初の 2 つの列のセルは、私が望むように編集可能としてマークされています。
私がしたいこと:
ただし、セルをダブルクリックして編集をトリガーすると、含まれているテキストが削除され、空のフィールドが表示されます。
しかし、含まれているテキストが非常に長くなる可能性があり、再入力してはならないため、含まれているテキストを削除して置き換えたくありません。すでに含まれているものを編集したいだけです。ダブルクリックすると、セルは以前に含まれていたテキスト (既に選択されている可能性があります) で編集可能になります。
質問:
どうすればこの動作を実現できますか? flags メソッドを編集して、これらのセルに別のプロパティを指定する必要がありますか?