2012-01-08 79 views
2

我是學生程序員,我正在爲我的公司做一些GUI編程,最近遇到了一個問題,我覺得我需要一些幫助。我使用Qt及其一些小部件仍然讓我感到困惑,文檔內容豐富,但有時會讓學生感到困惑(我希望我不想深入研究這個問題並忽略這個問題)。我收到的構建問題是在成員函數checkData中使用Ui。正如您可能已經猜到的,我正試圖驗證輸入到界面的數據,並顯示錯誤消息或收集數據。我正在使用類QString的toDouble函數來評估輸入。該函數標識輸入是否可以通過toDouble中的bool參數進行轉換(bool & worksornot)。 在轉換爲DOuble之前,我從UI中的lineEdit字段角度看文本。這似乎是我的問題所在;然而根據文件這應該工作;但應該始終是一個有趣的詞。我的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使用「UI :: 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

唉唉,因爲檢查數據已經連接到注入數據;哪些舉行ui !!感謝您的幫助! Noobs將noobs;謝謝你幫助我更多地思考問題,有時當你專注於這些小部件時,你會忘記範圍概念。 – 2012-01-08 04:09:47