3

这个问题的答案要么是 C++,要么没有真正回答我的问题。我正在学习 python,我不是专业程序员,我已经学习了语言但还没有构建实时应用程序。

  • 我使用 QT 设计了用户界面。
  • 我将此用户界面导入到我的主程序中。

用户界面[屏幕截图附件] *尝试实现: *

  • 我想将数据添加到 QLineEdit 中,当我点击“添加行”按钮时,它应该将数据输入到 QTableWidget 中。

  • 我已经使用 from "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 不存在 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 回答