45 QGridLayout* gridLayout,
int row) :
46 BaseWidget(parent,
"LabeledComboBoxWidget",
"LabeledComboBoxWidget")
48 CX_ASSERT(dataInterface->getAllowOnlyValuesInRange()==
true);
50 this->setEnabled(dataInterface->getEnabled());
52 mData = dataInterface;
55 mLabel =
new QLabel(
this);
56 mLabel->setText(mData->getDisplayName());
58 mCombo =
new QComboBox(
this);
59 connect(mCombo, SIGNAL(currentIndexChanged(
int)),
this, SLOT(comboIndexChanged(
int)));
64 gridLayout->addWidget(mCombo, row, 1);
79 void LabeledComboBoxWidget::comboIndexChanged(
int index)
81 mData->setValue(mCombo->itemData(index).toString());
86 mLabel->setVisible(on);
89 void LabeledComboBoxWidget::prePaintEvent()
91 mCombo->blockSignals(
true);
94 this->setEnabled(mData->getEnabled());
95 mLabel->setEnabled(mData->getEnabled());
96 mCombo->setEnabled(mData->getEnabled());
98 QString currentValue = mData->getValue();
99 QStringList range = mData->getValueRange();
100 int currentIndex = -1;
101 for (
int i = 0; i < range.size(); ++i)
103 mCombo->addItem(mData->convertInternal2Display(range[i]));
104 mCombo->setItemData(i, range[i]);
105 if (range[i] == currentValue)
108 mCombo->setCurrentIndex(currentIndex);
110 mCombo->setToolTip(mData->getHelp());
111 mLabel->setToolTip(mData->getHelp());
112 mCombo->blockSignals(
false);
#define CX_ASSERT(statement)
void changed()
emit when the underlying data value is changed: The user interface will be updated.
boost::shared_ptr< class StringPropertyBase > StringPropertyBasePtr