QTransferFunctionEditorByValues::QTransferFunctionEditorByValues(QWidget *parent) : QTransferFunctionEditor(parent) { setupUi(this); // Creem una scroll area per si hi ha molts intervals (no es pot crear des del Qt Designer) QScrollArea *scrollArea = new QScrollArea(this); qobject_cast<QBoxLayout*>(this->layout())->insertWidget(1, scrollArea); m_intervalEditorsWidget = new QWidget(scrollArea); QBoxLayout *layout = new QVBoxLayout(m_intervalEditorsWidget); m_intervalEditorsLayout = new QVBoxLayout(); layout->addLayout(m_intervalEditorsLayout); layout->addStretch(); layout->setMargin(0); scrollArea->setWidget(m_intervalEditorsWidget); scrollArea->setWidgetResizable(true); scrollArea->setFrameShape(QFrame::NoFrame); // Creem el primer interval QTransferFunctionIntervalEditor *first = new QTransferFunctionIntervalEditor(m_intervalEditorsWidget); first->setIsFirst(true); first->setIsLast(true); first->setObjectName("interval0"); m_intervalEditorsLayout->addWidget(first); connect(first, SIGNAL(startChanged(int)), SLOT(markAsChanged())); connect(first, SIGNAL(endChanged(int)), SLOT(markAsChanged())); connect(first, SIGNAL(colorChanged(const QColor&)), SLOT(markAsChanged())); // Mida mínima de la scroll area QStyle *style = scrollArea->style(); int scrollBarWidth = style->pixelMetric(QStyle::PM_ScrollBarExtent); scrollArea->setMinimumWidth(first->minimumSizeHint().width() + scrollBarWidth); m_numberOfIntervals = 1; m_changed = true; connect(m_addPushButton, SIGNAL(clicked()), SLOT(addInterval())); connect(m_removePushButton, SIGNAL(clicked()), SLOT(removeInterval())); connect(m_nameLineEdit, SIGNAL(textChanged(const QString&)), SLOT(markAsChanged())); }