Qt - 获取特定区域的数字(来自 QLineEdit)

Qt - Get numbers in specific area (from QLineEdit)

我有一个包含一些列和行的 QTableWidget,我想为特定列添加一个过滤器。

为此,我在 Window 中添加了一个 QLineEdit。 当我在 QLineEdit 中只添加一个数字时,我已经能够过滤行:

for(int i=0; i<tableWidget->rowCount(); i++)
{
    if(!tableWidget->item(i, column)->text().contains(lineEdit->text()))
    {
        tableWidget->hideRow(i);
    }
}

(插槽连接到LineEdit的textEdited-Signal)

我现在想做的事情: 当我在 QLineEdit 中写这样的东西时:10-30;隐藏所有行数不在 10 到 30 之间的行(>=10;<=30)。

有人有想法,我该如何解决?

这是我的决定。

检查 lineEdit 文本是否包含两个数字。

QString test = ui->lineEdit->text();
QStringList lst = test.split('-');
    if (lst.size() == 2)

将它们转换为整数。

int low = QString(lst[0]).toInt(), high = QString(lst[1]).toInt();

现在让我们到tableWidget 中输入小于或等于这两个数字。

for (int i = 1; i <= 100; i++) {
    int row = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(row);
    ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(i)));
}

connect(ui->lineEdit, &QLineEdit::textChanged, this, [=](const QString &test) {
    QStringList lst = test.split('-');
    if (lst.size() == 2) {
        int low = QString(lst[0]).toInt(), high = QString(lst[1]).toInt();
        for (int i = 0; i < ui->tableWidget->rowCount(); i++) {
            int temp = ui->tableWidget->item(i, 0)->text().toInt();
            if (temp < low || temp > high) {
                ui->tableWidget->hideRow(i);
            } else {
                ui->tableWidget->showRow(i);
            }
        }
    }
});