alitoh
8th August 2011, 16:29
I'm trying to make a time picker of sorts, but I'm having massive problems trying to align everything.
Basically, I have a
QVBoxLayout that has 3 QHBoxLayout that contain, each, a Label and a ComboBox (except a very particular case of "date range" selection.
I want to align all the widgets and that's just not happening, no matter what I try.
I'm not using neither designer or creator. I'm on VS2008 and drawing every widget by hand.
Any help on this issue, as well as required "extra" info such as code snipets, please feel free to request.
TimeRangeSelector::TimeRangeSelector(QWidget *parent)
{
//Main level
Qt::AlignRight;
m_pMainLayout = new QVBoxLayout();
itemCont->setLayout(m_pMainLayout);
itemCont->setMinimumSize(600, 400);
//First Level
QHBoxLayout * pHBox1 = new QHBoxLayout();
m_pMainLayout->setContentsMargins(0,0,5,5);
m_pMainLayout->addLayout(pHBox1);
QVRLabel * phBox1_pLabel1 = new QVRLabel("Period: ");
phBox1_pLabel1->setAlignment(Qt::AlignHCenter);
m_phBox1_pComboBox1 = new QVRComboBox();
m_phBox1_pComboBox1->setMinimumHeight(30);
m_phBox1_pComboBox1->setMaximumWidth(100);
m_phBox1_pComboBox1->addItem(" Hour");
m_phBox1_pComboBox1->addItem(" Day");
m_phBox1_pComboBox1->addItem(" Week");
m_phBox1_pComboBox1->addItem(" Month");
m_phBox1_pComboBox1->addItem(" Year");
m_phBox1_pComboBox1->addItem(" Date Range");
m_phBox1_pComboBox1->addItem(" Historical");
pHBox1->addWidget(phBox1_pLabel1);
pHBox1->addWidget(m_phBox1_pComboBox1);
//Second Level
QHBoxLayout * pHBox2 = new QHBoxLayout();
m_pMainLayout->addLayout(pHBox2);
m_widget1 = new QStackedWidget();
m_widget2 = new QStackedWidget();
QStackedWidget * m_dateRangeFromAux = new QStackedWidget();
m_widget1->setMaximumHeight(30);
m_widget2->setMaximumHeight(30);
m_dateRangeFromAux->setMaximumHeight(50);
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Hours");
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Days");
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Weeks");
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Months");
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Years");
QVRLabel * label = new QVRLabel(" From:");
QLineEdit * date = new QLineEdit("MM / DD / YYYY");
QVRTimePicker * timepicker = new QVRTimePicker();
m_widget1->addWidget(label);
m_widget2->addWidget(date);
m_dateRangeFromAux->addWidget(timepicker);
pHBox2->addWidget(m_widget1);
pHBox2->addWidget(m_widget2);
pHBox2->addWidget(m_dateRangeFromAux);
// Third Level
QHBoxLayout * pHBox3 = new QHBoxLayout();
m_pMainLayout->addLayout(pHBox3);
m_widget3 = new QStackedWidget();
m_widget4 = new QStackedWidget();
m_widget3->setMaximumHeight(30);
m_widget4->setMaximumHeight(30);
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Hours");
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Days");
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Weeks");
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Months");
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Years");
m_widget3->hide();
m_widget4->hide();
I'm also attaching an IMG of "What I got" vs "What I expected":
http://img10.imageshack.us/img10/3217/welpj.png
Basically, I have a
QVBoxLayout that has 3 QHBoxLayout that contain, each, a Label and a ComboBox (except a very particular case of "date range" selection.
I want to align all the widgets and that's just not happening, no matter what I try.
I'm not using neither designer or creator. I'm on VS2008 and drawing every widget by hand.
Any help on this issue, as well as required "extra" info such as code snipets, please feel free to request.
TimeRangeSelector::TimeRangeSelector(QWidget *parent)
{
//Main level
Qt::AlignRight;
m_pMainLayout = new QVBoxLayout();
itemCont->setLayout(m_pMainLayout);
itemCont->setMinimumSize(600, 400);
//First Level
QHBoxLayout * pHBox1 = new QHBoxLayout();
m_pMainLayout->setContentsMargins(0,0,5,5);
m_pMainLayout->addLayout(pHBox1);
QVRLabel * phBox1_pLabel1 = new QVRLabel("Period: ");
phBox1_pLabel1->setAlignment(Qt::AlignHCenter);
m_phBox1_pComboBox1 = new QVRComboBox();
m_phBox1_pComboBox1->setMinimumHeight(30);
m_phBox1_pComboBox1->setMaximumWidth(100);
m_phBox1_pComboBox1->addItem(" Hour");
m_phBox1_pComboBox1->addItem(" Day");
m_phBox1_pComboBox1->addItem(" Week");
m_phBox1_pComboBox1->addItem(" Month");
m_phBox1_pComboBox1->addItem(" Year");
m_phBox1_pComboBox1->addItem(" Date Range");
m_phBox1_pComboBox1->addItem(" Historical");
pHBox1->addWidget(phBox1_pLabel1);
pHBox1->addWidget(m_phBox1_pComboBox1);
//Second Level
QHBoxLayout * pHBox2 = new QHBoxLayout();
m_pMainLayout->addLayout(pHBox2);
m_widget1 = new QStackedWidget();
m_widget2 = new QStackedWidget();
QStackedWidget * m_dateRangeFromAux = new QStackedWidget();
m_widget1->setMaximumHeight(30);
m_widget2->setMaximumHeight(30);
m_dateRangeFromAux->setMaximumHeight(50);
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Hours");
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Days");
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Weeks");
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Months");
generateSecondLevelWidgets(pHBox2, m_widget1, m_widget2, "Years");
QVRLabel * label = new QVRLabel(" From:");
QLineEdit * date = new QLineEdit("MM / DD / YYYY");
QVRTimePicker * timepicker = new QVRTimePicker();
m_widget1->addWidget(label);
m_widget2->addWidget(date);
m_dateRangeFromAux->addWidget(timepicker);
pHBox2->addWidget(m_widget1);
pHBox2->addWidget(m_widget2);
pHBox2->addWidget(m_dateRangeFromAux);
// Third Level
QHBoxLayout * pHBox3 = new QHBoxLayout();
m_pMainLayout->addLayout(pHBox3);
m_widget3 = new QStackedWidget();
m_widget4 = new QStackedWidget();
m_widget3->setMaximumHeight(30);
m_widget4->setMaximumHeight(30);
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Hours");
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Days");
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Weeks");
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Months");
generateThirdLevelWidgets(pHBox3, m_widget3, m_widget4, "Years");
m_widget3->hide();
m_widget4->hide();
I'm also attaching an IMG of "What I got" vs "What I expected":
http://img10.imageshack.us/img10/3217/welpj.png