問題タブ [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.

0 投票する
1 に答える
2358 参照

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.itemsindexvalue = index.model().items[row][column]

ここに画像の説明を入力

0 投票する
0 に答える
2064 参照

python - QTableViewがクリックされたときにデリゲートアイテムを取得する方法

以下のコードは、単一のQTableView. QItemDelegatePersistentEditor として割り当てられています。作成されるエディタには 2 種類ありQLineEditます。 は列 0 用に作成され、「QComboBox」は列 1 用に作成されます。

をクリックするtableViewと、両方のエディターのインスタンスを取得したいと思います: LineEdit のインスタンスとコンボボックスのインスタンスです。これを達成する方法は?

0 投票する
1 に答える
769 参照

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?

0 投票する
1 に答える
429 参照

python - 開いている永続的なデリゲート アイテムを照会する方法

をクリックすると、最初の列 (整数データであるため) と他の 2 つの列がデフォルトでtableView's item開きます。PersistentEditorQSpinBoxQLineEdit

onClickクリックされた行に対してすでに開かれている永続エディターの数を照会したいと思います。

ここに画像の説明を入力

0 投票する
1 に答える
1697 参照

python - QLinearGradient を QTableView アイテムの背景色として割り当てる方法

QLineEdit のパレットを使用して、QGradient を背景色として割り当てることができます。

ここに画像の説明を入力

で作業している間QTableView、私はすべてのリクエストに対してモデルのメソッドからQAbstractTableModelソリッドを返します。無地の色の代わりに、tableViewの「アイテム」にグラデーションを割り当てたいと思います。単色の代わりにグラデーションを割り当てる方法は?QColordataBackgroundColorRole

ここに画像の説明を入力

0 投票する
2 に答える
1012 参照

c++ - QAbstractTableModel の基になるデータを完全に変更するには?

初めての投稿になりますが、プログラミングを始めてから、たくさんの方々にお世話になりました。

私は Qt を初めて使用し、現時点で最初のプロジェクトを作成しようとしています。私の質問は、モデル、基になるデータ、およびビューの間の通信についてです。

私は最初にバックグラウンドのもの (データの保存など) を GUI から分離しました。今、私はテンプレート クラスを持っており、から継承Matrixするテンプレート クラスを作成しました。これは正常に機能しています。つまり、テーブルを編集でき、ビューとモデルのデータで値が更新されます。MatrixModelQAbstractTableModel

ここで私の質問: 新しいメソッドを作成せずにモデル内のデータを変更するにはどうすればよいですか?

メインウィンドウ.cpp:

m.transpose()モデルの基になるデータを呼び出す方法はありますか? 変更するとどうなりmますか? モデルのデータに影響しますか? 私は多くのことを試しましたが、何もうまくいきませんでした。1 つの「問題」は、テンプレート クラスを使用しているため、標準のシグナル/スロット構文を使用できないことです。

私の最後の試みは、モデルで更新クラスを作成することでした:

そして、それをボタンとラムダ関数に接続しようとしました:

しかし、ボタンを押すとプログラムがクラッシュするようでした。私は本当に必死です xD あなたが私を助けてくれることを願っています. 詳細が必要な場合は、お気軽にお問い合わせください^^

よろしくお願いします

デニス

編集1:これまでのところ、(あなたの助けを借りて:))、モデルにマトリックスの関数を再度記述し(transpose()など)、そこからデータの変更を発行する必要があることを理解しました(emit dataChangedまたはbeginResetModel(を使用) )...) しかし、データの基礎となるモデルを変更することはできません。私が書いたら

これはメインウィンドウで:

モデル内のこれ:

移調ボタンを押すと、プログラムがクラッシュします。行にコメントすると

アウト、すべてが機能します。

編集 2: データ ストレージに問題がある可能性があるため、コピー コンストラクターとマトリックス クラスのプライベート変数を次に示します。

0 投票する
3 に答える
3904 参照

python - Qt4以降でQTableViewをソートする方法

ここに画像の説明を入力

コードは単一の を作成しQTableViewます。列の並べ替えが有効になりました。列名をクリックすると (1、2、または 3 は何も起こりません)。プロキシモデルを使用せずにこのソートを機能させるには?

0 投票する
0 に答える
880 参照

python - QTableViewの現在の列とそのソート方向を取得する方法

ここに画像の説明を入力

このコードは単一のQTableView. 列をクリックすると、列のソート方向を示す矢印が表示されます。tableView の項目自体をクリックすると、クリックされたインデックスが出力されます。tableView 項目をクリックすると、3 つの列 (ヘッダー) のうち現在のもの (矢印が表示されている列) と、並べ替えの矢印が指している方向 (上または下) を知りたいです。これを達成する方法は?

0 投票する
1 に答える
697 参照

python - QTableViewでソート矢印インジケーターを制御する方法

ここに画像の説明を入力

これQTableViewが作成されたら、並べ替えの「矢印」インジケーターを中央の列に表示したいと思います。矢印は下向きである必要があります。これを達成する方法は?

0 投票する
2 に答える
5863 参照

python - コンテンツを削除せずに PyQt QAbstractTableModel のテーブルを編集する

私がこれまでに行ったこと:

編集可能なセルを含むカスタムQAbstractTableModel( QTableView-Widget で使用) を実装しています。これらのセルのプロパティは、flags()次のようなメソッドで指定されます。

最初の 2 つの列のセルは、私が望むように編集可能としてマークされています。

私がしたいこと:

ただし、セルをダブルクリックして編集をトリガーすると、含まれているテキストが削除され、空のフィールドが表示されます。

セルの編集例

しかし、含まれているテキストが非常に長くなる可能性があり、再入力してはならないため、含まれているテキストを削除して置き換えたくありません。すでに含まれているものを編集したいだけです。ダブルクリックすると、セルは以前に含まれていたテキスト (既に選択されている可能性があります) で編集可能になります。

質問:

どうすればこの動作を実現できますか? flags メソッドを編集して、これらのセルに別のプロパティを指定する必要がありますか?