QTableWidget中如何动态分配单元格

Posted

技术标签:

【中文标题】QTableWidget中如何动态分配单元格【英文标题】:How to dynamically allocate cells in QTableWidget 【发布时间】:2012-03-12 15:09:49 【问题描述】:

我是一名学生程序员,我正在使用 Qt 为我公司的一个产品构建 GUI。本质上,此 GUI 将读取某些文件并将数据输入表格供用户编辑。我知道如何静态构造 QTableWidget。在这种情况下,我使用了以下内容:

 for(int x=0; x < ui->tableWidgetInjectionLocations->rowCount(); x++)
    
        for(int y=0; y < ui->tableWidgetInjectionLocations->columnCount(); y++)
        
            ui->tableWidgetInjectionLocations->setItem(x,y, qTableWidgetItemInjection);
        
    

问题是这种方式会创建静态或固定数量的单元格,我希望这些单元格基于用户交互来构建。也许当用户填写最后一行中的任何单元格以填充新单元格时,或者当用户向下滚动时......我离题的是我无法在Qt Documentation 中找到有关如何处理此问题的任何文档。也许它的作者会阻止或者我错过了一些明显的东西,但任何帮助都会很棒。感谢您的阅读,并感谢您提前提供的任何帮助。

【问题讨论】:

【参考方案1】:

要添加一行,只需在您的 QTableWidget::model() 上添加一个 QAbstractItemModel::insertRowQTableWidget 会自动调整。

ui->tableWidgetInjectionLocations->model()->insertRow(ui->tableWidgetInjectionLocations->model()->rowCount());

在最后一行之后添加一行。

有很多方法可以触发追加,你必须更精确地确定你想要什么......

【讨论】:

我认为这实际上是一个好的开始;在这种情况下,我认为我想使用向下滚动来附加额外的行。我似乎无法在 Qt 文档中找到一个信号处理程序;有什么方向吗? 向下滚动?您的意思是在最后一行时单击滚动条上的向下箭头?除了我不确定它是否可行之外,如果因为所有行都适合视口而没有滚动条会发生什么? 和大多数电子表格应用程序一样,我必须从固定数量的行开始,以确保有足够的行数来确保滚动条。我想可以实现一个按钮来动态添加行,但这有点带走了这种动态能力。我想这里必须考虑性能,因为我会在修改单元格时运行检查数据功能。正如你所说的“不确定它是否可行”。

以上是关于QTableWidget中如何动态分配单元格的主要内容,如果未能解决你的问题,请参考以下文章

表格未聚焦时如何设置QTableWidget单元格背景颜色?

如何使用 PYQT5 使 QTableWidget 单元格只读?

如何在 QTableWidget 中获取单元格的索引?

QT的QTableWidget控件中单元格图片如何导出到EXCEL文件对应单元格中

如何在pyqt中更改Qtablewidget的特定单元格背景颜色

如何选择包含按钮的 QTableWidget 单元格