問題タブ [qtablewidgetitem]

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 投票する
2 に答える
5950 参照

python - その要素を知っている QTableWidget 行のインデックスを取得します

[私は PyQt4 を使用していますが、この Qt4 の問題は Python 固有のものではないと思います。]

私は持っていQTableWidgetます。各行の最初の列にはボタンがあります。クリックすると、行が削除されます。

行を削除するには、removeRow(int row)行のインデックスを引数として受け取るメソッドを使用します。信号を接続するとき、その間に変更される可能性があるため、行のインデックスを知ることができません (たとえば、最初の行が削除されると、すべての行のインデックスが変更されます)。

ここで受け入れられた回答は、コールバックに行内の QTableWidgetItem のインスタンスを渡し、削除時にこのアイテムから行番号を取得することを提案しています。

行の要素がQTableWidgetItem. 要素は、ボタン自体といくつかの ComboBoxes です。

これを回避する方法がわかりません。

私の要素の 1 つを QTableWidgetItem に収めることはできますか? ある種の隠し列に QTableWidgetItem を追加する必要がありますか?

現在の実装ではindexAt(QtGui.qApp.focusWidget())(上記の質問に対する他の回答を参照) を使用していますが、これは残念な回避策のように見えます。

ボタンをこのようなチェック可能な QTableWidgetItem に置き換えると

行インデックスに戻るために使用できる QTableWidgetItem があります。しかし、ボタンのように「チェック」または「クリック」イベントをキャッチする方法がわかりません。私が見つけたのは のitemClicked信号QTableWidgetだけですが、他のすべてのウィジェットを除外する必要があります。

私が見逃している明らかな何かがなければなりません。

編集

ここで読んだことから、setItem を使用した QTableWidgetItem と setCellWidget を使用した Button ウィジェットの両方を同じセルに追加できました。これは私にはあまり自然なことではないように思えますが、どうやら機能しているようです (今はテストできません)。

私はそうするだろうと思います。ボタンを追加し、同じセルにダミーの QTableWidgetItem を追加して、行への参照として渡します。

これが意図された方法ですか?

編集 2

またはQTableWidget、適切なウィジェットではない可能性があります。ここでLayout提案されているように、を使用する必要があります。

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

python - 複数の QCheckBox を QTableWidget の奇数行に挿入する

160行のテーブルを作成しようとしていて、QCheckBox奇数行ごとに、特に列10に挿入しています。問題は、80行を作成する必要がQCheckBoxあることです(各行に1つずつ、ユーザー)...

QCheckBox私がしなければならない 9 つのプロジェクト用に80 個のオブジェクトを 1 つずつ作成するのはナンセンスです。

ループでそれを行う方法はありますか?何も考えられず、答えを探しても何も見つかりませんでした。

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

c++ - Qt - 複数の QtableWidget でリンクされたアイテムを共有できますか

Qt 複数の tableWidgets がリンクされたアイテムを共有する

こんにちは、Qt には QMainWindow -> centralWidget (QWidget) -> QtabWidget -> 10 個のタブ (QWidgets) -> それぞれに最大 26 個の QtableWidget があります。

サンプル1

サンプル 2

アイデアは、これの代わりに:

少ないコードですべての tableWidget に毎回列を追加できる方法はありますか?

もちろん、そこにはありません。実際に知りたいのは、実際には同じアイテムである各アイテムの一部をリンクする方法があることですが、たとえばプレイヤー名が行ごとに同じであるなど、それぞれで繰り返されますしたがって、ユーザーが 1 つの名前を編集した場合は、すべての tableWidget の同じ行で名前を変更する必要があります。

何らかの方法でそれらをリンクする方法はありますか、またはアイテムの変更をシグナルとしてチェックする唯一の方法はありますか?

また、1 つの tableWidget で列ごとに並べ替えた場合、行の新しい配置はすべての tableWidget で同じにする必要があります。

誰でも私を正しい方向に向けることができますか?私が持っている唯一の考えは、ItemChangedの信号を使用することです. より良い方法はありませんか?

お時間をいただきありがとうございます。

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

c++ - ファイルからQTableウィジェットアイテムにデータを入れる方法は?

Qtable と input.txt というファイルがあります

input.txt から読み取って Qtable ウィジェットにデータを表示しようとしています。

テーブルには 9 行と 9 列があります。QTable ウィジェット アイテムを作成して、for ループを使用してデータを入れてみました。しかし、それを機能させることができませんでした。

これが私が試したコードです

}

これは、各セルに数字を追加できるかどうかを確認するための単なるデモでした。

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

pyqt4 - PyQt:アイテムの編集中にQTableWidgetItemの内容を取得する方法は?

最後に、私が解決しようとしている問題は、誰かがフィールドを編集してQTableWidgetから [OK] をクリックしてから、Enter キーを押すか、テーブル セルからフォーカスを移動することです。

「コミット」されていないため、デフォルトの動作はこのセルを無視するようです。

簡単な例を次に示します。

この例でaは、最初のセルに入力するbと、2 番目のセルに入力されます。最初にエンターキーを押したり、フォーカスを変更したりせずに「OK」をクリックすると、次のように表示されます。

{'a': ''}

見たいとき:

{'a': 'b'}

私が持っていたアイデアは、セルを QLineEdit のように扱い、textChanged を使用してユーザーがいつ入力したかを確認し、次に、キーストロークごとにセルの setItem を舞台裏で確認することでした-セル内のデータは常に最新。QStyledItemDelegateQLineEdit (textChanged シグナルを持つ) のように編集できるように (以下)を使用してこれを試みました。デリゲート自体から変更を出力できるため、これはある程度機能しますが、textChanged シグナルが有用な場所で取得できないようです (つまり、ダイアログはこれを認識しないため、テーブル内の setItem)。

しかし、それはうまくいきません。

また、QLineEdit の textChanged が発生したときに commitData シグナルを発行しようとしましたが、これも役に立ちませんでした。

セルがまだ編集されている間にセルの内容を取得する方法はありますか?