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);
}
}
}
});
我有一个包含一些列和行的 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);
}
}
}
});