2012-01-08 3 views
2

Я ученик программист, и я занимаюсь программированием для моей компании, и у меня недавно возникла проблема, с которой я чувствую, что мне нужна помощь. Im, использующий Qt и некоторые из его виджетов, все еще запутывает меня, и документация информативна, но иногда сбивает с толку ученика (я надеюсь, что я не буду углубляться в проблему и не учитывать эту проблему). Проблема сборки, которую я получаю, заключается в использовании Ui в функции check_ata-функции-члена. Как вы могли догадаться, я пытаюсь проверить данные, введенные в интерфейс, и либо отображать сообщение об ошибке, либо собирать данные. Я использую функцию toDouble класса QString для ввода ввода. Функция определяет, может ли вход быть преобразован параметром bool в toDouble (bool & worksornot). До преобразования toDOuble я беру текст из поля lineEdit perspectivley из Ui. Кажется, что это моя проблема; однако в соответствии с документацией это СЛЕДУЕТ работать; однако всегда должно было быть забавным словом. Код для моих функций 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; 
       } 

Извините за длинные имена; как студент, я обнаружил, что мне нужно использовать намного больше описания и аббревиатуры. Поскольку я не уверен, в чем проблема, я не уверен, насколько значителен мой код. Пожалуйста, не оставляйте отрицательные комментарии или отмечайте этот вопрос как несущественный. Просто дайте мне знать, что вы хотели бы видеть, и я добавлю больше. Heres мой 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» текст и разыменования элементы пользовательского интерфейса напрямую:

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

Ааа, потому что проверка данных уже подключен к данным инъекции; которые держат ui !! Спасибо за помощь! Noobs будет noobs; спасибо за то, что помогли мне подумать немного больше из коробки; иногда, когда вы фокусируетесь на некоторых из этих виджетов, вы забываете о концепциях области видимости. –

Смежные вопросы