3
所以我有這個QFrame
它是父窗口小部件(在代碼中表示爲this
)。在這個小部件中,我想在頂部10px處放置一個QWidget
(底部爲10px,因此它的高度爲140px,而父層爲160px)。 QWidget
將在垂直佈局中的滾動區域內具有多個自定義按鈕,以便當組合的按鈕高度超過高度(140px)時,自動滾動設置。由於滾動不是針對整個父窗口小部件的,而僅適用於子窗口小部件,因此滾動應該僅應用於此處的子窗口小部件。這裏是我的代碼:QScrollArea與QWidget和QVBoxLayout沒有像預期的那樣工作
//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);
出乎我的意料,這是我得到什麼(附圖片)。我做錯了什麼,以及如何解決這個問題?
這是有道理的,觀察調試信息。 – AlexanderVX 2015-03-03 05:57:54