2011-07-25 21 views
1

10個のグリッドに50個のQComboBoxを表示したいQDialogがあります。非常に多くのコンボボックスは私のダイアログボックスに収まらないので、私はスクロールを使いたい。qdialogとscrollareaとgridlayout

これは私が試したことですが、これは私のためには機能しません。私はこのソリューションで正しい方向に向かっていますか?すべてのヘルプ ため

// setup scroll area 
QScrollArea *scrollArea = new QScrollArea(this); 
scrollArea->setWidgetResizable(true); 

// setup grid layout 
QRect rect; 
rect.setX(0); 
rect.setY(0); 
rect.setWidth(1920); 
rect.setHeight(1080); 

QGridLayout *gridLayout = new QGridLayout; 
gridLayout->setGeometry(rect); 

// add servers to scroll area 
QComboBox *cmbxServer; 
int row = 0; 
int col = 0; 
for (col = 0; col < 10; col++) 
{ 
    gridLayout->setColumnMinimumWidth(col, 150); 
    gridLayout->setColumnStretch(col, 0); 
} 

for (row = 0; row < 5; row++) 
{ 
    for (col = 0; col < 10; col++) 
    { 
     cmbxServer = new QComboBox(this); 
     cmbxServer->setGeometry(0, 0, 150, 30); 
     cmbxServer->addItem("Item 1"); 
     cmbxServer->addItem("Item 2"); 
     cmbxServer->addItem("Item 3"); 
     gridLayout->addWidget(cmbxServer, row, col); 
    } 
} 

gridLayout->addWidget(scrollArea); 

おかげDhotiwalla

答えて

3

はいあなたは正しい方向に向かっています。以下のようにしてください

//Create and populate your layout 
QGridLayout *gridLayout = new QGridLayout; 

//Create a widget and set its layout as your new layout created above 
QWidget *viewport = new QWidget; 
viewport->setLayout(gridLayout); 

//Add the viewport to the scroll area 
QScrollArea *scrollArea = new QScrollArea; 
scrollArea->setWidget(viewport); 

//Add the scroll area to your main window's layout 
mainLayout->addWidget(scrollArea);