2012-01-08 15 views
2

私は学生プログラマーで、私は自分の会社のためのGUIプログラミングをしていますが、最近私はいくつかの援助が必要だと感じる問題に遭遇しました。 ImはQtを使用していて、そのウィジェットのいくつかはまだ私には混乱しています。ドキュメントは参考になりますが、学生にとって混乱することがあります(私はこの問題について深く考えずに見落としたくないと思っています)。私が受け取っているビルドの問題は、メンバー関数checkDataでUiを使用することです。あなたが推測したように、私はインターフェイスに入力されたデータを検証し、エラーメッセージを表示するか、データを収集しようとしています。私はクラスのQStringのtoDouble関数を使って入力を検証しています。この関数は、入力をtoBoubleパラメータで変換できるかどうかを識別します(bool & worksornot)。 toDubleに変換する前に、私はUiからlineeditフィールドperspectivleyからテキストを取ります。これは私の問題がどこにあるのかと思われます。しかし、ドキュメントによれば、これはうまくいくはずです。しかし、常に面白い言葉だったはずです。私のcheckData関数のコードはここにあります:Uiの使用が無効

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 

私が受け取る正確なエラーがのinvlaid使用である「宇井:: InjectionDialog」とこれはあなたが私を与えることができます任意の助けを事前に

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

おかげで発生します。

答えて

1

あなたが唯一、直接「InjectionDialog」テキストおよびUI要素を逆参照を削除する必要があります。

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

ああチェックデータがすでに注入データに接続されているので、あなたが助けてくれてありがとう! Noobsはnoobsになります。私は箱から少しだけ考え直すのを助けてくれてありがとう。場合によっては、これらのウィジェットの一部に集中してスコープの概念を忘れてしまうことがあります。 –

関連する問題