【问题标题】:How to dynamically allocate cells in QTableWidgetQTableWidget中如何动态分配单元格
【发布时间】: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 中找到有关如何处理此问题的任何文档。也许它的作者会阻止或者我错过了一些明显的东西,但任何帮助都会很棒。感谢您的阅读,并感谢您提前提供的任何帮助。

【问题讨论】:

    标签: c++ qt user-interface dynamic qtablewidget


    【解决方案1】:

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

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

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

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

    【讨论】:

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