annotate widgets/CriteriaDialog.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 1c638a8e9897
children
rev   line source
benoitrigolleau@108 1 #include <QWidget>
benoitrigolleau@108 2 #include <QVBoxLayout>
benoitrigolleau@108 3 #include <QFrame>
benoitrigolleau@108 4 #include <QVector>
benoitrigolleau@108 5 #include <QString>
benoitrigolleau@112 6 #include <iostream>
benoitrigolleau@108 7
benoitrigolleau@108 8 #include "CriteriaDialog.h"
benoitrigolleau@108 9
benoitrigolleau@108 10 CriteriaDialog::CriteriaDialog(QWidget *parent)
benoitrigolleau@108 11 : QDialog(parent)
benoitrigolleau@108 12 {
benoitrigolleau@108 13 this->setWindowFlags(Qt::ToolTip);
benoitrigolleau@108 14
benoitrigolleau@108 15 m_labelTitle = new QLabel(tr("Select criterias:"));
benoitrigolleau@108 16
benoitrigolleau@108 17 m_buttonBox = new QDialogButtonBox(Qt::Horizontal);
benoitrigolleau@108 18 m_buttonOK = new QPushButton(tr("Ok"));
benoitrigolleau@108 19 m_buttonCancel = new QPushButton(tr("Cancel"));
benoitrigolleau@108 20 m_layoutForCheckBoxs = new QVBoxLayout();
benoitrigolleau@108 21 QFrame *auxFrame = new QFrame();
benoitrigolleau@108 22 QVBoxLayout *mainLayout = new QVBoxLayout;
benoitrigolleau@108 23 QVBoxLayout *auxLayout = new QVBoxLayout;
benoitrigolleau@108 24 QFrame *frameForCheckBoxs = new QFrame();
benoitrigolleau@108 25
benoitrigolleau@108 26 frameForCheckBoxs->setLayout(m_layoutForCheckBoxs);
benoitrigolleau@108 27
benoitrigolleau@108 28 m_labelTitle->setAlignment(Qt::AlignCenter);
benoitrigolleau@108 29
benoitrigolleau@108 30 // default button for enter key
benoitrigolleau@108 31 m_buttonOK->setDefault(true);
benoitrigolleau@108 32
benoitrigolleau@108 33 m_buttonBox->addButton(m_buttonOK, QDialogButtonBox::AcceptRole);
benoitrigolleau@108 34 m_buttonBox->addButton(m_buttonCancel, QDialogButtonBox::RejectRole);
benoitrigolleau@108 35
benoitrigolleau@108 36 connect(m_buttonOK, SIGNAL(clicked()), this, SLOT(accept()));
benoitrigolleau@108 37 connect(m_buttonCancel, SIGNAL(clicked()), this, SLOT(reject()));
benoitrigolleau@108 38
benoitrigolleau@108 39 auxLayout->addWidget(m_labelTitle);
benoitrigolleau@108 40 auxLayout->addWidget(frameForCheckBoxs);
benoitrigolleau@108 41 auxLayout->addWidget(m_buttonBox);
benoitrigolleau@108 42 auxLayout->setSizeConstraint(QLayout::SetFixedSize);
benoitrigolleau@108 43
benoitrigolleau@108 44 auxFrame->setLayout(auxLayout);
benoitrigolleau@108 45 auxFrame->setFrameStyle(QFrame::Panel | QFrame::Plain);
benoitrigolleau@108 46
benoitrigolleau@108 47 mainLayout->addWidget(auxFrame);
benoitrigolleau@108 48 mainLayout->setMargin(0);
benoitrigolleau@108 49 mainLayout->setSpacing(0);
benoitrigolleau@108 50 mainLayout->setSizeConstraint(QLayout::SetFixedSize);
benoitrigolleau@108 51
benoitrigolleau@108 52 setLayout(mainLayout);
benoitrigolleau@108 53
benoitrigolleau@112 54
benoitrigolleau@108 55 }
benoitrigolleau@108 56
benoitrigolleau@108 57 void CriteriaDialog::setLocation(int x, int y){
benoitrigolleau@108 58 this->setGeometry(x,y,this->width(),this->height());
benoitrigolleau@108 59 }
benoitrigolleau@108 60
benoitrigolleau@108 61 void CriteriaDialog::setOpacity(qreal value){
benoitrigolleau@108 62 this->setWindowOpacity(value);
benoitrigolleau@108 63 }
benoitrigolleau@108 64
benoitrigolleau@108 65
benoitrigolleau@108 66 void CriteriaDialog::addCriteria(QString name){
benoitrigolleau@108 67 QCheckBox *criteriaCheckBox = new QCheckBox(name);
benoitrigolleau@108 68 m_layoutForCheckBoxs->addWidget(criteriaCheckBox);
benoitrigolleau@112 69 this->adjustSize();
benoitrigolleau@112 70
benoitrigolleau@108 71 }
benoitrigolleau@108 72
benoitrigolleau@108 73 QVector<QString> CriteriaDialog::result(){
benoitrigolleau@108 74 QVector<QString> result;
benoitrigolleau@108 75 for(int i=0;i<m_layoutForCheckBoxs->count();i++){
benoitrigolleau@108 76 QCheckBox *criteriaCheckBox = (QCheckBox*) m_layoutForCheckBoxs->itemAt(i)->widget();
benoitrigolleau@108 77 if(criteriaCheckBox->isChecked()){
benoitrigolleau@108 78 result.append(criteriaCheckBox->text());
benoitrigolleau@108 79 }
benoitrigolleau@108 80 }
benoitrigolleau@108 81 return result;
benoitrigolleau@108 82 }