如何仅在 QTableWidget 的一列中添加一行?

Posted

技术标签:

【中文标题】如何仅在 QTableWidget 的一列中添加一行?【英文标题】:How to add a row to only one column of a QTableWidget? 【发布时间】:2019-08-23 13:53:27 【问题描述】:

我有一个包含两列的 QTableWidget: “绝对链接”和“非绝对链接”。

我想添加链接列表中的每个链接,具体取决于它们是否是绝对的。 我只想在对应的列中插入一行

是否有类似于 .insertRow() 的方法可以让我做到这一点?

这是我尝试过的,但它不断将我的行添加到所有列中。

for link in self.links_:
    numRows = self.htmlLinksTableWidget.rowCount()
    self.HTMLLinksTableWidget.insertRow(numRows)
        if self.isAbsolute(link):
            self.HTMLLinksTableWidget.setItem(numRows, 1, QtWidgets.QTableWidgetItem(link))
        else:
            self.HTMLLinksTableWidget.setItem(numRows, 0, QtWidgets.QTableWidgetItem(link))

我也试过这个,使用两个列表,它不能完美地工作并且它没有添加列表中的所有链接:

for AbsoluteLink in self.AbsoluteLinks:
        numRows = self.HTMLLinksTableWidget.rowCount()
        self.HTMLLinksTableWidget.insertRow(numRows)
        self.HTMLLinksTableWidget.setItem(numRows, 1, QtWidgets.QTableWidgetItem(AbsoluteLink))


for count, NonAbsoluteLink in enumerate(self.NonAbsoluteLinks):
    self.HTMLLinksTableWidget.setItem(count, 0, QtWidgets.QTableWidgetItem(NonAbsoluteLink))

【问题讨论】:

【参考方案1】:

使用第二种策略,您可以执行类似的操作

self.AbsoluteLinks.setRowCount(max(len(self.AbsoluteLinks), len(self.NonAbsoluteLinks)))

for row, link in enumerate(self.AbsoluteLinks):
    self.HTMLLinksTableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem(link))

for row, link in enumerate(self.NonAbsoluteLinks):
    self.HTMLLinksTableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem(link))

(或者你可以结合两个for循环:)

self.AbsoluteLinks.setRowCount(max(len(self.AbsoluteLinks), len(self.NonAbsoluteLinks)))
for col, links in enumerate((self.AbsoluteLinks, self.NonAbsoluteLinks)):
    for row, link in enumerate(links):
        self.HTMLLinksTableWidget.setItem(row, col, QtWidgets.QTableWidgetItem(link))

【讨论】:

以上是关于如何仅在 QTableWidget 的一列中添加一行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在一个DataGridView中的一列添加DateTimePicker控件 C#

SQL如何查询表中某一列中的数据的前几位

Oracle 如何判断2列中的最大值

sql 表中添加一列并将这一列赋值?

仅在 MySQL 列中自动标记日期

SQL数据库中如何将表中某一列部分负数改为正数