Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Qt4/Query/StringQtQuery.cpp

    r94d5ac6 rdbf6c7  
    3636#include <Qt/qlabel.h>
    3737#include <Qt/qlineedit.h>
     38#include <Qt/qcombobox.h>
    3839
    3940#include "CodePatterns/MemDebug.hpp"
     
    5253  thisLayout = new QHBoxLayout();
    5354  titleLabel = new QLabel(QString(getTitle().c_str()));
    54   inputBox = new QLineEdit();
    5555  parent->addLayout(thisLayout);
    5656  thisLayout->addWidget(titleLabel);
    57   thisLayout->addWidget(inputBox);
    5857
    59   onUpdate(inputBox->text());
    60   connect(inputBox,SIGNAL(textChanged(const QString&)),this,SLOT(onUpdate(const QString&)));
     58
     59
     60  if (dynamic_cast<DiscreteValidator<std::string>*>(&_param.getValidator()) != NULL){
     61    // Discrete set of valid string -> use a ComboBox.
     62
     63    const std::vector<std::string> &strings = dynamic_cast<DiscreteValidator<std::string>*>(&_param.getValidator())->getValidValues();
     64    comboBox = new QComboBox();
     65    for(vector<std::string>::const_iterator iter  = strings.begin();
     66        iter != strings.end();
     67        ++iter) {
     68      comboBox->addItem(QString((*iter).c_str()));
     69    }
     70    thisLayout->addWidget(comboBox);
     71
     72    connect(comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(onUpdateCombo(int)));
     73    onUpdateCombo(0);
     74  }else{
     75    // Use a LineEdit.
     76    inputBox = new QLineEdit();
     77    thisLayout->addWidget(inputBox);
     78
     79    onUpdate(inputBox->text());
     80    connect(inputBox,SIGNAL(textChanged(const QString&)),this,SLOT(onUpdate(const QString&)));
     81  }
    6182}
    6283
     
    7091}
    7192
     93void QtDialog::StringQtQuery::onUpdateCombo(int newIndex) {
     94  temp = comboBox->itemText(newIndex).toStdString();
     95  dialog->update();
     96}
     97
Note: See TracChangeset for help on using the changeset viewer.