使用Qt QTableWidget接收多个用户输入值

Take in multiple user input values using Qt QTableWidget

本文关键字:用户 输入 Qt QTableWidget 使用      更新时间:2023-10-16

我正在尝试制作一个基本的UI,用于使用Qt接收用户输入并显示输出。我刚刚开始使用 UI,所以这可能看起来微不足道。我必须接受 3 组输入,其中每组由 90 个整数值组成。将每个集合视为 30 x 3 的 2D 数组。我正在尝试查看在Qt中处理此用户输入的最佳方法是什么。我已经使用Qt来处理.ui文件,下面的链接是它应该是什么样子的屏幕截图。

https://i.stack.imgur.com/KedP7.png

更具体地说,我使用 QTableWidget 来创建表本身。我现在的问题是,如何从表的每个单元格访问用户输入并将其存储到整个表的数组中?

帮助将不胜感激。

谢谢!

QTableWidget::item(int row, int column)返回位于位置(行、列(的项目。行可以介于 0 和 QTableWidget::rowCount() – 1 之间,列介于 0 和 QTableWidget::columnCount() – 1 之间

QTableWidgetItem::text()返回项目文本。

创建一个函数,

该函数读取所有项目并将它们循环添加到数组中,将 Enter-Button 的按下信号与此函数连接。

如果您只想读取更新的项目:QTableWidget::itemChanged()信号会发送已更新的项目。 QTableWidget::indexFromItem()返回项的索引,以便您可以更新数组。

这可能会有所帮助。(我没有评论的特权(:

我使用了一个help_index,它基本上从左到右对元素进行编号。每次编辑单元格(返回按下(时,都会选择下一个元素(help_index行中的 +1(。如果到达最后一个索引,我将聚焦"确定"按钮。

您可以在以下位置读取数据:

  • 输入时间 (test_STR1(
  • 按下"确定"按钮(test_STR2按钮上设置自动默认值:如何使QPushButton可按回车键?

标签功能:

    void MainWindow::on_tableWidget_cellChanged(int row, int column)
    {
        QString test_STR1 = ui->tableWidget->item(row,column)->text();   // is string
        qDebug(QString("OnCell %1,%2:%3").arg(column).arg(row).arg(test_STR).toLatin1());
        // EG int array[rows][columns];
        // QList<QStringList<QString>>  (equivalent to: QList<QList<QString>>)
        int columncount , rowcount, help_index,nextRow, nextColimn;
        columncount = ui->tableWidget->columnCount();
        rowcount = ui->tableWidget->rowCount();
        help_index = column + row*columncount +1;
        if(help_index < columncount*rowcount)
        {
            nextRow = help_index / columncount;
            nextColimn = help_index % columncount;
            ui->tableWidget->setCurrentCell(nextRow,nextColimn);
        }
        else
        {
            ui->pushButton_OK->setFocus();
        }
    }

Ok_button:

void MainWindow::on_pushButton_OK_clicked()
{
    for(int i=ui->tableWidget->columnCount()-1;i>=0;i--)
        for(int j=ui->tableWidget->rowCount()-1;j>=0;j--)
        {
            QString test_STR2 = ui->tableWidget->item(j,i)->text();
            qDebug(QString("OnOk %1,%2:%3").arg(i).arg(j).arg(test_STR).toLatin1());
        }
}