質問

内部には、10 x 5グリッドに50個のqcomboboxを表示したいqdialogがあります。非常に多くのコンボボックスが私のダイアログボックスに収まりないので、スクロールを使用したいと思います。

これが私が試したことですが、これは私にとってはうまくいきません。私はこの解決策で正しい方向に向かっていますか?

// 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

役に立ちましたか?

解決

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

//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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top