8

だから私はQFrame親ウィジェットであるこれを持っています(コードでは で表されthisます)。このウィジェットでは、QWidget上から 10 ピクセル (および下から 10 ピクセル、その結果、親は 160 ピクセルであるのに対し、高さは 140 ピクセルになります) に配置したいと考えています。にはQWidget、垂直レイアウトのスクロール領域内に多数のカスタム ボタンが含まれるため、組み合わせたボタンの高さがQWidget's高さ (140px) を超えると、スクロールが自動的に設定されます。スクロールは親ウィジェット全体ではなく、子ウィジェットのみに適用されるため、スクロールはここでは子ウィジェットにのみ適用する必要があります。これが私のコードです:

//this is a custom button class with predefined height and some formatting styles
class MyButton: public QPushButton
{

public:
    MyButton(std::string aText, QWidget *aParent);

};

MyButton::MyButton(std::string aText, QWidget *aParent): QPushButton(QString::fromStdString(aText), aParent)
{
    this->setFixedHeight(30);
    this->setCursor(Qt::PointingHandCursor);
    this->setCheckable(false);
    this->setStyleSheet("background: rgb(74,89,98);   color: black; border-radius: 0px; text-align: left; padding-left: 5px; border-bottom: 1px solid black;");
}

//this is where I position the parent widget first, and then add sub widget
this->setGeometry(x,y,width,160);
this->setStyleSheet("border-radius: 5px; background:red;");

//this is the widget which is supposed to be scrollable
QWidget *dd = new QWidget(this);
dd->setGeometry(0,10,width,140);
dd->setStyleSheet("background: blue;");

QVBoxLayout *layout = new QVBoxLayout();
dd->setLayout(layout);

for (int i = 0; i < fValues.size(); i++)
{
    MyButton *button = new MyButton(fValues[i],dd);
    layout->addWidget(button);
}

QScrollArea *scroll = new QScrollArea(this);
scroll->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scroll->setWidget(dd);

私の予想に反して、これは私が得ているものです(添付画像)。私は何を間違っていますか、どうすれば修正できますか?

ここに画像の説明を入力

4

1 に答える 1