我是一名学生程序员,我正在为我的公司做一些 GUI 编程,我最近遇到了一个问题,我觉得我需要一些帮助。我正在使用 Qt,它的一些小部件仍然让我感到困惑,文档内容丰富,但有时会让学生感到困惑(我希望我不会深入研究这个问题并忽视这个问题)。我收到的构建问题是在成员函数 checkData 中使用 Ui。正如您可能已经猜到的那样,我正在尝试验证输入界面的数据并显示错误消息或收集数据。我正在使用 QString 类的 toDouble 函数来评估输入。该函数标识输入是否可以通过 toDouble(bool &worksornot) 中的 bool 参数进行转换。在转换为 Double 之前,我从 UI 的 lineEdit 字段透视中获取文本。看来这就是我的问题所在;但是根据文档,这应该有效;然而应该一直是一个有趣的词。我的 checkData 函数的代码在这里:
void InjectionDialog::checkData()
{
bool validateFluidVelocity;
QString tempStrFluidVelocity;
tempStrFluidVelocity = ui->InjectionDialog.lineEditFluidVelocity->text();
double convertedFluidVelocity = tempStrFluidVelocity.toDouble(&validateFluidVelocity);
if (validateFluidVelocity == false)
{
QErrorMessage validateErrorFluidVelocityError;
validateErrorFluidVelocityError.showMessage("Fluid velocity input is invalid");
validateErrorFluidVelocityError.exec();
}
else
{
transData.lineEditFluidVelocity = convertedFluidVelocity;
}
bool validateFluidMassFlow;
QString tempStrFluidMassFlow;
tempStrFluidMassFlow = ui->InjectionDialog.lineEditFluidMassFlow->text();
double convertedFluidMassFlow = tempStrFluidMassFlow.toDouble(&validateFluidMassFlow);
if (validateFluidMassFlow == false)
{
QErrorMessage validateErrorFluidMassFlowError;
validateErrorFluidMassFlowError.showMessage("Fluid mass flow input is invalid");
validateErrorFluidMassFlowError.exec();
}
else
{
transData.lineEditFluidMassFlow = convertedFluidMassFlow;
}
bool validateParticleVelocity;
QString tempStrParticleVelocity;
tempStrParticleVelocity = ui->InjectionDialog.lineEditParticleVelocity->text();
double convertedParticleVelocity = tempStrParticleVelocity.toDouble(&validateParticleVelocity);
if (validateParticleVelocity == false)
{
QErrorMessage validateErrorParticleVelocity;
validateErrorParticleVelocity.showMessage("Particle velocity input is invalid");
validateErrorParticleVelocity.exec();
}
else
{
transData.lineEditParitcleVelocity =convertedParticleVelocity;
}
bool validateParticleMassFlow;
QString tempStrParticleMassFlow;
tempStrParticleMassFlow = ui->InjectionDialog.lineEditParticleMassFlow->text();
double convertedParticleMassFlow = tempStrParticleMassFlow.toDouble(&validateParticleMassFlow);
if (validateParticleMassFlow == false)
{
QErrorMessage validateErrorParticleMassFlow;
validateErrorParticleMassFlow.showMessage("Particle mass flow input is invalid");
validateErrorParticleMassFlow.exec();
}
else
{
transData.lineEditParticleMassFlow = convertedParticleMassFlow;
}
对不起,名字太长了;作为一名学生,我发现我需要使用更多的描述与缩写。因为我不确定问题是什么,所以我不确定我的代码有多少是相关的。请不要留下负面评论或将此问题标记为不重要。只要让我知道你想看到什么,我会添加更多。这是我的 injectiondialog 标题:
#ifndef INJECTIONDIALOG_H
#define INJECTIONDIALOG_H
#include "injectiondata.h"
#include <QDialog>
namespace Ui {
class InjectionDialog;
}
class InjectionDialog : public QDialog
{
Q_OBJECT
public:
void setData(InjectionData &name);
explicit InjectionDialog(QWidget *parent = 0);
~InjectionDialog();
private:
InjectionData transData;
Ui::InjectionDialog *ui;
private slots:
void checkData();
void checkFluidVelocity();
};
#endif // INJECTIONDIALOG_H
我收到的确切错误是使用了“Ui::InjectionDialog”,这发生在
tempStrFluidVelocity = ui->InjectionDialog.lineEditFluidVelocity->text();
tempStrFluidMassFlow = ui->InjectionDialog.lineEditFluidMassFlow->text();
tempStrParticleVelocity = ui->InjectionDialog.lineEditParticleVelocity->text();
tempStrParticleMassFlow = ui->InjectionDialog.lineEditParticleMassFlow->text();
提前感谢您能给我的任何帮助。