我试图解决这个问题几天但我没有取得任何进展,我想我错过了什么,请帮我解决。
在主窗口中,我创建了滚动区域并给它垂直布局。我创建了Qt Designer类(myform.h,myform.cpp和myform.ui)并放置了一些按钮+垂直布局。
这是" myform.ui":http://oi59.tinypic.com/23sch2r.jpg
我希望主窗口中的滚动区域包含" myform.ui",以及" myform.ui"中的元素。不会调整大小,但会在滚动区域中显示滚动条。
我的mainwindow.cpp是
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "myform.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyForm* myform = new MyForm(this);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(myform);
ui->scrollArea->setWidgetResizable(false);
ui->scrollArea->setLayout(layout);
}
MainWindow::~MainWindow()
{
delete ui;
}
问题是滚动条没有出现,并且在调整窗口大小时正在调整元素的大小。
图片:http://oi62.tinypic.com/w83xvp.jpg
这只是举例说明我遇到的问题的最小例子。
答案 0 :(得分:0)
根据QScrollArea的文档,您似乎必须将背景窗口小部件设置为滚动区域。此代码直接取自QScrollArea
小部件的文档:
QLabel *imageLabel = new QLabel;
QImage image("happyguy.png");
imageLabel->setPixmap(QPixmap::fromImage(image));
scrollArea = new QScrollArea;
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setWidget(imageLabel);
制作图像标签。像素图被加载到其中。然后滚动区域小部件由setWidget()
命令指定。
在您的代码中,我认为ui->scrollArea->setLayout(layout);
应该是
ui->scrollArea->setWidget(layout);
代替。
注意:我没有测试过此代码,但认为它可以解决您的问题。