• 14668阅读
  • 6回复

为什么QScrollArea的滚动条没有出现? [复制链接]

上一主题 下一主题
离线myhot21
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-21
我在QScrollArea中添加多个QListWidget时,QScrollArea没有出现滚动条,并且QListWidget全被压缩到很少空间.大家请看图1和图2的效果.

mainwindow.cpp文件代码:

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    rightLayout = new QVBoxLayout;
    QWidget *widget = new QWidget;
    widget->setLayout(rightLayout);
    widget->setMinimumHeight(100);
    widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

    QScrollArea *scroll = new QScrollArea;
    scroll->setWidget(widget);
    scroll->setWidgetResizable(true);
    splitter = new QSplitter;
    QPushButton *button = new QPushButton;
    button->setText("Add Widget");
    button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    splitter->addWidget(button);

    splitter->addWidget(scroll);

    QObject::connect(button, SIGNAL( clicked() ), this, SLOT(addMyWidget()));


    this->setCentralWidget(splitter);
}
void MainWindow::addMyWidget()
{
    QListWidget *listWidget = new QListWidget;
    for(int i = 0; i < 4; i++)
    {
        QListWidgetItem *newItem = new QListWidgetItem;
        newItem->setText("aaaaaa");
        listWidget->addItem(newItem);
    }

    listWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    rightLayout->addWidget(listWidget);
}

MainWindow::~MainWindow()
{

}

有空的朋友,可以的话帮我看下代码,谢谢.
[ 此帖被myhot21在2009-07-21 23:55重新编辑 ]
附件: scroll.rar (2 K) 下载次数:33
离线duduqq

只看该作者 1楼 发表于: 2009-07-22
这样肯定不会出现了,因为你四个listWidget的高加起来都没有QScrollArea那么大。而且你是用了rightLayout来布局,所以右边会按比例来分配空间,所以都不会出现滚动条。试试去掉rightLayout布局。
离线myhot21

只看该作者 2楼 发表于: 2009-07-22
引用第1楼duduqq于2009-07-22 08:35发表的  :
这样肯定不会出现了,因为你四个listWidget的高加起来都没有QScrollArea那么大。而且你是用了rightLayout来布局,所以右边会按比例来分配空间,所以都不会出现滚动条。试试去掉rightLayout布局。

去掉rightLayout布局,怎样添加多个listWidget到QScrollArea中?目前我只知用rightLayout的方法添加多个listWidget.
离线myhot21

只看该作者 3楼 发表于: 2009-07-22
有没有人知道怎样才能让上边的QScrollArea在添加多个listWidget时出现滚动条.
离线xtfllbl

只看该作者 4楼 发表于: 2009-07-22
把QListWidget的值定住,比如setFixedSize,然后应该就看到scrollbar了
上海欢迎您
离线myhot21

只看该作者 5楼 发表于: 2009-07-22
引用第4楼xtfllbl于2009-07-22 14:22发表的  :
把QListWidget的值定住,比如setFixedSize,然后应该就看到scrollbar了


还是看不到.
离线myhot21

只看该作者 6楼 发表于: 2009-07-23
原来是我自己写多了widget->setMinimumHeight(100),删除这一句就可以了。如果想让某个组件跟随面板的大小自动调整,可以使用下边的方法设置
widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);设置widget在水平和垂直方向调整组件大小的方式。
参数值有:
QSizePolicy::Fixed
QSizePolicy::Minimum
QSizePolicy::Maximum
QSizePolicy::Preferred
QSizePolicy::Expanding
QSizePolicy::MinimumExpanding
QSizePolicy::Ignored
快速回复
限100 字节
 
上一个 下一个