PDA

View Full Version : QScrollArea not showing



mvbhavsar
27th October 2014, 13:50
Hi,

I have written following code. But it is now show scroll bars and also not scrolling. I want to use scroll area and add widget to that.




#include "files.h"
Files::Files(QWidget *parent) :QWidget(parent)
{
generateForm();
}


void Files::generateForm()
{
QScrollArea *scroll = new QScrollArea;
QWidget *wid = new QWidget;
QGridLayout *lay = new QGridLayout(wid);
QLabel *lb_file_id = new QLabel("FILE_ID");
lay->addWidget(lb_file_id,0,0);
QLineEdit *tx_file_id = new QLineEdit();
lay->addWidget(tx_file_id,0,1,1,1);
QLabel *lb_file_name = new QLabel("FILE_NAME");
lay->addWidget(lb_file_name,0,2);
QLineEdit *tx_file_name = new QLineEdit();
lay->addWidget(tx_file_name,0,3,1,1);
QLabel *lb_file_type = new QLabel("FILE_TYPE");
lay->addWidget(lb_file_type,1,0);
QLineEdit *tx_file_type = new QLineEdit();
lay->addWidget(tx_file_type,1,1,1,1);

tx_extra->setMinimumHeight(300);
QSpacerItem *spacer = new QSpacerItem(5,5,QSizePolicy::Expanding,QSizePolicy ::Expanding);
lay->addItem(spacer,37,2);

QHBoxLayout *hb1 = new QHBoxLayout(scroll);
hb1->addWidget(wid);
scroll->setWidget(wid);
scroll->setWidgetResizable(true);
QHBoxLayout *hb2 = new QHBoxLayout();
hb2->addWidget(scroll);
setLayout(hb2);
}

wysota
27th October 2014, 14:08
Lines 30 and 31 surely make no sense, remove them. Also I don't see any points for lines 27 and 28, you can remove them too. See if it helps. Of course the internal widget needs to be large enough to make scroll bars appear.

mvbhavsar
27th October 2014, 19:46
Following code worked.



#include "mysample.h"

MySample::MySample(QWidget *parent) :
QWidget(parent)
{
QWidget *wid = new QWidget;
QGridLayout *gridLay = new QGridLayout(wid);

int col=0;
int row=0;
for(int i=0; i<100; i++){
QLabel *lb = new QLabel("Label "+QString::number(i));
gridLay->addWidget(lb,row,col);
col++;
if (col==4){
col=0;
row++;
}
QLineEdit *tx = new QLineEdit;
gridLay->addWidget(tx,row,col);
col++;
if (col==4){
col=0;
row++;
}
}
QScrollArea *scroll = new QScrollArea;
wid->setBackgroundRole(QPalette::Dark);
scroll->setWidgetResizable(true);
QHBoxLayout *hb1 = new QHBoxLayout();
scroll->setLayout(hb1);
scroll->setWidget(wid);

QHBoxLayout *hb2 = new QHBoxLayout;
hb2->addWidget(scroll);
setLayout(hb2);

}