예제 #1
0
void FitDialog::initFitPage()
{
    QGridLayout *gl1 = new QGridLayout();
    gl1->addWidget(new QLabel(tr("Curve")), 0, 0);
	boxCurve = new QComboBox();
    gl1->addWidget(boxCurve, 0, 1);
    gl1->addWidget(new QLabel(tr("Function")), 1, 0);
	lblFunction = new QLabel();
    gl1->addWidget(lblFunction, 1, 1);
	boxFunction = new QTextEdit();
	boxFunction->setReadOnly(true);
    QPalette palette = boxFunction->palette();
    palette.setColor(QPalette::Active, QPalette::Base, Qt::lightGray);
    boxFunction->setPalette(palette);
	boxFunction->setMaximumHeight(50);
    gl1->addWidget(boxFunction, 2, 1);
	gl1->addWidget(new QLabel( tr("Initial guesses")), 3, 0 );

	boxParams = new QTableWidget();
    boxParams->setColumnCount(3);
    boxParams->horizontalHeader()->setClickable(false);
    boxParams->horizontalHeader()->setResizeMode (0, QHeaderView::ResizeToContents);
    boxParams->horizontalHeader()->setResizeMode (1, QHeaderView::Stretch);
    boxParams->horizontalHeader()->setResizeMode (2, QHeaderView::ResizeToContents);
    QStringList header = QStringList() << tr("Parameter") << tr("Value") << tr("Constant");
    boxParams->setHorizontalHeaderLabels(header);
    boxParams->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
    boxParams->verticalHeader()->hide();
    gl1->addWidget(boxParams, 3, 1);

	gl1->addWidget(new QLabel( tr("Algorithm")), 4, 0 );
	boxAlgorithm = new QComboBox();
	boxAlgorithm->addItem(tr("Scaled Levenberg-Marquardt"));
	boxAlgorithm->addItem(tr("Unscaled Levenberg-Marquardt"));
	boxAlgorithm->addItem(tr("Nelder-Mead Simplex"));
    gl1->addWidget(boxAlgorithm, 4, 1);

	gl1->addWidget(new QLabel( tr("Color")), 5, 0);
	boxColor = new ColorBox();
	boxColor->setColor(QColor(Qt::red));
    gl1->addWidget(boxColor, 5, 1);

    QGroupBox *gb1 = new QGroupBox();
    gb1->setLayout(gl1);

    QGridLayout *gl2 = new QGridLayout();
    gl2->addWidget(new QLabel(tr("From x=")), 0, 0);
	boxFrom = new QLineEdit();
    gl2->addWidget(boxFrom, 0, 1);
	gl2->addWidget(new QLabel( tr("To x=")), 1, 0);
	boxTo = new QLineEdit();
    gl2->addWidget(boxTo, 1, 1);
    QGroupBox *gb2 = new QGroupBox();
    gb2->setLayout(gl2);

    QGridLayout *gl3 = new QGridLayout();
    gl3->addWidget(new QLabel(tr("Iterations")), 0, 0);
	boxPoints = new QSpinBox();
    boxPoints->setRange(10, 10000);
	boxPoints->setSingleStep(50);
	boxPoints->setValue(1000);
    gl3->addWidget(boxPoints, 0, 1);
	gl3->addWidget(new QLabel( tr("Tolerance")), 1, 0);
	boxTolerance = new QLineEdit("1e-4");
	gl3->addWidget(boxTolerance, 1, 1);
    QGroupBox *gb3 = new QGroupBox();
    gb3->setLayout(gl3);

    QHBoxLayout *hbox1 = new QHBoxLayout();
    hbox1->addWidget(gb2);
    hbox1->addWidget(gb3);

    QHBoxLayout *hbox2 = new QHBoxLayout();
	hbox2->addWidget(new QLabel(tr( "Y Error Source" )));
	boxYErrorSource = new QComboBox();
	boxYErrorSource->addItem(tr("Errors Unknown"));
	boxYErrorSource->addItem(tr("Associated"));
	boxYErrorSource->addItem(tr("Statistical (Poisson)"));
	boxYErrorSource->addItem(tr("Arbitrary Dataset"));
    hbox2->addWidget(boxYErrorSource);
    QGroupBox *gb4 = new QGroupBox();
    gb4->setLayout(hbox2);

	tableNamesBox = new QComboBox();
	tableNamesBox->setEnabled(false);
    hbox2->addWidget(tableNamesBox);
	colNamesBox = new QComboBox();
	colNamesBox->setEnabled(false);
    hbox2->addWidget(colNamesBox);

    QHBoxLayout *hbox3 = new QHBoxLayout();
	buttonEdit = new QPushButton(tr( "<< &Edit function" ) );
    hbox3->addWidget(buttonEdit);
	btnDeleteFitCurves = new QPushButton(tr( "&Delete Fit Curves" ));
    hbox3->addWidget(btnDeleteFitCurves);
	buttonOk = new QPushButton(tr( "&Fit" ) );
	buttonOk->setDefault( true );
    hbox3->addWidget(buttonOk);
	buttonCancel1 = new QPushButton(tr( "&Close" ));
    hbox3->addWidget(buttonCancel1);
	buttonAdvanced = new QPushButton(tr( "Custom &Output >>" ));
    hbox3->addWidget(buttonAdvanced);
    hbox3->addStretch();

    QVBoxLayout *vbox1 = new QVBoxLayout();
    vbox1->addWidget(gb1);
    vbox1->addLayout(hbox1);
    vbox1->addWidget(gb4);
    vbox1->addLayout(hbox3);

    fitPage = new QWidget();
    fitPage->setLayout(vbox1);
    tw->addWidget(fitPage);

	connect( boxCurve, SIGNAL( activated(const QString&) ), this, SLOT( activateCurve(const QString&) ) );
	connect( buttonOk, SIGNAL( clicked() ), this, SLOT(accept()));
	connect( buttonCancel1, SIGNAL( clicked() ), this, SLOT(close()));
	connect( buttonEdit, SIGNAL( clicked() ), this, SLOT(showEditPage()));
	connect( btnDeleteFitCurves, SIGNAL( clicked() ), this, SLOT(deleteFitCurves()));
	connect( boxYErrorSource, SIGNAL( activated(int) ), this, SLOT( yErrorSourceChanged(int) ) );
	connect( buttonAdvanced, SIGNAL(clicked()), this, SLOT(showAdvancedPage() ) );
    connect( tableNamesBox, SIGNAL( activated(int) ), this, SLOT( selectSrcTable(int) ) );

	setFocusProxy(boxFunction);
}
예제 #2
0
void fitDialog::initFitPage()
{
    fitPage = new QWidget( tw, "fitPage" );
    QButtonGroup *GroupBox1 = new QButtonGroup( 2,QGroupBox::Horizontal,tr(""), fitPage,"GroupBox1" );

    new QLabel( tr("Curve"), GroupBox1, "TextLabel22",0 );
    boxCurve = new QComboBox(GroupBox1, "boxCurve" );

    new QLabel( tr("Function"), GroupBox1, "TextLabel2",0 );
    lblFunction = new QLabel(GroupBox1, "boxOrder" );

    new QLabel(QString::null, GroupBox1, "TextLabel2",0 );
    boxFunction = new QTextEdit(GroupBox1, "boxOrder" );
    boxFunction->setReadOnly(true);
    boxFunction->setMaximumHeight(60);

    new QLabel( tr("Initial guesses"), GroupBox1, "TextLabel23",0 );
    boxParams = new QTable(GroupBox1, "boxParams");
    boxParams->setNumCols(2);
    QStringList header;
    header << tr("Parameter") << tr("Value");
    boxParams->setColumnLabels(header);
    boxParams->setColumnReadOnly(0, true);
    boxParams->setColumnStretchable(1, true);

    new QLabel( tr("Algorithm"), GroupBox1, "TextLabel44",0 );
    boxSolver = new QComboBox(GroupBox1, "boxSolver" );
    boxSolver->insertItem(tr("Scaled Levenberg-Marquardt"));
    boxSolver->insertItem(tr("Unscaled Levenberg-Marquardt"));
    boxSolver->insertItem(tr("Nelder-Mead Simplex"));

    new QLabel( tr("Color"), GroupBox1, "boxColorLabel",0 );
    boxColor = new ColorBox( FALSE, GroupBox1);
    boxColor->setColor(QColor(red));

    QHBox *hbox=new QHBox(fitPage,"hbox");
    hbox->setSpacing(5);

    QButtonGroup* GroupBox4 = new QButtonGroup(2,QGroupBox::Horizontal,tr( "" ),hbox, "GroupBox4" );

    new QLabel( tr("From x="), GroupBox4, "TextLabel3",0 );
    boxFrom = new QLineEdit(GroupBox4, "boxFrom" );

    new QLabel( tr("To x="), GroupBox4, "TextLabel5",0 );
    boxTo = new QLineEdit(GroupBox4, "boxOrder" );

    QButtonGroup *GroupBox3 = new QButtonGroup( 2,QGroupBox::Horizontal,tr(""),hbox,"GroupBox3" );

    new QLabel( tr("Iterations"), GroupBox3, "TextLabel4",0 );
    boxPoints = new QSpinBox(10, 10000, 50, GroupBox3, "boxStart" );
    boxPoints->setValue(1000);

    new QLabel( tr("Tolerance"), GroupBox3, "TextLabel41",0 );
    boxTolerance = new QLineEdit(GroupBox3, "boxTolerance" );
    boxTolerance->setText("1e-4");

    QButtonGroup *GroupBox2 = new QButtonGroup(4,QGroupBox::Horizontal,tr(""),fitPage,"GroupBox2" );
    GroupBox2->setFlat (TRUE);
    GroupBox2->setLineWidth (0);

    buttonEdit = new QPushButton(GroupBox2, "buttonOk" );
    buttonEdit->setText( tr( "<< &Edit function" ) );

    btnDeleteTables = new QPushButton(GroupBox2, "btnDeleteTables" );
    btnDeleteTables->setText( tr( "&Delete Fit Curves" ) );

    buttonOk = new QPushButton(GroupBox2, "buttonOk" );
    buttonOk->setText( tr( "&Fit" ) );
    buttonOk->setAutoDefault( TRUE );
    buttonOk->setDefault( TRUE );

    buttonCancel = new QPushButton(GroupBox2, "buttonCancel" );
    buttonCancel->setText( tr( "&Cancel" ) );

    QVBoxLayout* hlayout = new QVBoxLayout(fitPage, 5, 5, "hlayout");
    hlayout->addWidget(GroupBox1);
    hlayout->addWidget(hbox);
    hlayout->addWidget(GroupBox2);

// signals and slots connections
    connect( boxCurve, SIGNAL( activated(int) ), this, SLOT( activateCurve(int) ) );
    connect( buttonOk, SIGNAL( clicked() ), this, SLOT(accept()));
    connect( buttonCancel, SIGNAL( clicked() ), this, SLOT(close()));
    connect( buttonEdit, SIGNAL( clicked() ), this, SLOT(showEditPage()));
    connect( btnDeleteTables, SIGNAL( clicked() ), (ApplicationWindow *)this->parent(), SLOT(deleteFitTables()));

    setFocusProxy(boxFunction);
}