当前位置:编程学习 > wap >>

关于ScrollArea

创建一个带ui的widget程序,在qt designer设置如下界面
最外到内依次是scrollarea->widget->horizontal layout

然后在构造函数里有如下代码:
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    for(int i = 0; i < 20; i++)
    {
        QLabel *pLabel = new QLabel(tr("%1").arg(i));
        pLabel->setFixedSize(100, 100);
        ui->horizontalLayout->addWidget(pLabel);
    }
    ui->scrollArea->setWidgetResizable(true);

}

不管怎么设置i的值,滚动条都不会出现,不知道什么原因,求解 --------------------编程问答-------------------- 我觉得你应该看看scrollarea->widget的大小,如果这个widget大小不变的话,你的外面可能变化吗
你在这个widget添加再多的控件也是没用的 --------------------编程问答-------------------- 默认widget的sizePolicy是prefered,该模式下控件的sizeHint是它的sizeHint,但是可以放大或者缩小,我设置成其他模式还是不行 --------------------编程问答-------------------- 应该要在程序中手动调节widget的大小吧。
不妨加上ui->scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);看看水平滚动条是不是一直为灰色的。 --------------------编程问答-------------------- 我也遇到同样的问题
在同一个ui里我要动态添加很多表格
就想到了用scrollarea,加上ui->scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn)
但是滚动条一直都是灰色 --------------------编程问答-------------------- 我大概有点明白了,我们用Qt Designer放ScrollArea的时候,在后台它会多一个widget,
QScrollArea *scrollArea;
QWidget *scrollAreaWidgetContents;

所以就无需增加一个widget,直接用如下代码就行
 ui->scrollAreaWidgetContents->setLayout(horLayout); --------------------编程问答-------------------- ScrollArea实质是里面会自动添加一个widget
如果这个widget超过了外面的scrollarea才会出现滚动条 --------------------编程问答-------------------- 是这样啊,我明天去试试
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,