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);
81 return "<html></html>";
84 void LabeledComboBoxWidget::comboIndexChanged(
int index)
86 mData->setValue(mCombo->itemData(index).toString());
91 mLabel->setVisible(on);
94 void LabeledComboBoxWidget::prePaintEvent()
96 mCombo->blockSignals(
true);
99 this->setEnabled(mData->getEnabled());
100 mLabel->setEnabled(mData->getEnabled());
101 mCombo->setEnabled(mData->getEnabled());
103 QString currentValue = mData->getValue();
104 QStringList range = mData->getValueRange();
105 int currentIndex = -1;
106 for (
int i = 0; i < range.size(); ++i)
108 mCombo->addItem(mData->convertInternal2Display(range[i]));
109 mCombo->setItemData(i, range[i]);
110 if (range[i] == currentValue)
113 mCombo->setCurrentIndex(currentIndex);
115 mCombo->setToolTip(mData->getHelp());
116 mLabel->setToolTip(mData->getHelp());
117 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