3

この質問への答えは C++ であるか、私の質問に実際には答えていません。私は Python を学んでいます。私はプロのプログラマーではありません。言語は学んだものの、まだライブ アプリケーションを構築したことはありません。

  • QTを使ってユーザーインターフェースを設計しました。
  • このユーザー インターフェイスをメイン プログラムにインポートしました。

ユーザー インターフェイス[スクリーンショットを添付] *達成しようとしていること: *

  • QLineEdit にデータを追加したいのですが、「行の追加」ボタンを押すと、データが QTableWidget に入力されます。

  • "firstApp" import PyMainWindow からこのステートメントを使用して、既に UI をメイン プログラムにインポートしています。

  • QTableWidget にデータを追加するには、メイン プログラムで新しいオブジェクトを作成する必要がありますか?

これは私がやろうとしていたことですが、うまくいきません

コードは動作しません:

self.addData.clicked.connect(self.addDataClicked)

def addDataClicked(self):
    username = self.userName.text()
    print username ## for testing if signal is working ##

    self.item.setItem(0,0,username) 

## 0 は行、0 は列、ユーザー名は追加したいデータです ##

私が得ているエラーはitem does not exist globalです。私はこれを理解していますが、私はすでにUIをメインアプリにインポートしているので、PythonはUIファイルでその項目について話していることを知っていると考えていました. このように書かれています。

    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(0, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(1, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(2, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(3, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(4, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(5, item)
    self.tableWidget.horizontalHeader().setVisible(True)

助けてください。

4

1 に答える 1

2

入力したデータは、テーブル ヘッダーになるはずですか? かなり珍しいようです。

ドキュメントから:

アイテムは、必要な場所でテーブルに追加される前に、テーブルの外で構築されます。

QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(pow(row, column+1)));
tableWidget->setItem(row, column, newItem);

次のようなことを試してください:

def addDataClicked(self):
    username = self.userName.text()

    self.myTable.insertRow(0)
    item = QtGui.QTableWidgetItem(username)
    self.myTable.setItem(0, 0, item)

[編集] 問題は、新しいアイテムが新しい独立したオブジェクトとして作成され、コンテナーに追加されることです。Qt のすべてのアイテム ビュー ウィジェットでこのように機能します (ただし、一部のウィジェットには、作成時にそれを可能にするコンストラクターがあります)。

以前にリンクされたページから:

リスト ウィジェットは、他のウィジェットと同じ方法で構築されます。

QListWidget *listWidget = new QListWidget(this);

リスト アイテムは、作成時にリスト ウィジェットに直接追加できます。

new QListWidgetItem(tr("Sycamore"), listWidget);
new QListWidgetItem(tr("Chestnut"), listWidget);
new QListWidgetItem(tr("Mahogany"), listWidget); 

また、親リスト ウィジェットなしで作成し、後でリストに追加することもできます。

QListWidgetItem *newItem = new QListWidgetItem;
newItem->setText(itemText);
listWidget->insertItem(row, newItem);
于 2013-06-06T17:16:37.480 に答える