Ui的使用无效

时间:2012-01-08 03:18:47

标签: qt user-interface input user-input qlineedit

我是一名学生程序员,我正在为我的公司做一些GUI编程,最近我遇到了一个问题,我觉得我需要一些帮助。我使用Qt和它的一些小部件仍然让我困惑,文档提供了信息,但有时让学生感到困惑(我希望我没有深入研究这个问题并忽略了这个问题)。我收到的构建问题是在成员函数checkData中使用Ui。您可能已经猜到我正在尝试验证输入到界面中的数据,并显示错误消息或收集数据。我正在使用类QString的toDouble函数来评估输入。该函数标识输入是否可以通过toDouble(bool& worksornot)中的bool参数进行转换。 在转换为Duuble之前,我从Ui的lineEdit字段perspectivley中获取文本。这似乎是我的问题所在;但根据文件,这应该工作;然而,应该一直是一个有趣的词。我的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;
                }

抱歉长名;作为一名学生,我发现我需要使用更多的描述与缩写。因为我不确定问题是什么,我不确定我的代码中有多少是相关的。请不要留下负面评论或将此问题标记为无实质性。只是让我知道你想看到什么,我会添加更多。继承我的注射头标题:

#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

我收到的确切错误是使用&#39; Ui :: InjectionDialog&#39;这发生在

tempStrFluidVelocity = ui->InjectionDialog.lineEditFluidVelocity->text();
tempStrFluidMassFlow = ui->InjectionDialog.lineEditFluidMassFlow->text();
tempStrParticleVelocity = ui->InjectionDialog.lineEditParticleVelocity->text();
tempStrParticleMassFlow = ui->InjectionDialog.lineEditParticleMassFlow->text();

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

您只需要删除&#34; InjectionDialog&#34;文本和直接取消引用ui元素:

tempStrFluidVelocity = ui->lineEditFluidVelocity->text();
tempStrFluidMassFlow = ui->lineEditFluidMassFlow->text();
tempStrParticleVelocity = ui->lineEditParticleVelocity->text();
tempStrParticleMassFlow = ui->lineEditParticleMassFlow->text();