如何在qt小部件中只获取数字来解方程?

问题描述 投票:0回答:1

我想在一个文本编辑中编写一个方程,并在另一个文本编辑中显示结果。例如,在一篇文本编辑中,我写道:

(3x2+5x-6)

如何只得到上面方程中的数字来解方程?

这是我到目前为止所写的。

void MainWindow::on_input_textChanged()
{
    float X =ui->x_value->toPlainText().toFloat();
    QString z=ui->input->toPlainText().;
   // float r= a*x*x + b*x + c;
   // ui->result->setPlainText(QString::number(r));
}

X 是方程中 x 的设定值,z 是方程。

x_value
是获取X值的文本编辑,
input 
是二次方程的文本编辑。

result
是在另一个文本编辑中显示结果的位置。

r 应该是方程的最终答案。

如何只获取等式或 z 中的数字?

编辑:

这是我到目前为止想到的:

    QString z=ui->input->toPlainText();

    QList<QList<QString>> myList;
    myList.append(z.split("x2"));
    QString s1 = myList.at(0).at(0);
    float a =s1.toFloat();

    z.removeAt(s1);
    z.remove("x2");

    QList<QList<QString>> myList2;
    myList2.append(z.split("x"));
    QString s2 = myList2.at(0).at(0);
    float b=s2.toFloat();

    z.remove(s2);
    z.remove("x");

    float c=z.toFloat();
    float r=a*x*x+b*x+c;

但问题是

z.removeAt(s1);
z.remove(s2);
会删除所有与
s1
s2
相似的数字。 知道如何解决这个问题吗?

c++ qt widget qwidget qtextedit
1个回答
0
投票

使用 QRegularExpression 解析所需的参数。 这是仅采用方程 a、b、c 系数的正则表达式。

([^x]-?\d+)|(\d+)x

© www.soinside.com 2019 - 2024. All rights reserved.