首页| 论坛| 消息

回复: QGroupbox 动态添加滚动条显示不出来
#6 回 太阳真圆 的帖子 [kongxz 03-29 10:06]
太阳真圆:您有这方面的例子吗?可以分享下源代码么?谢谢啦。
我设置最大最小宽度后,什么都显示不了。试了我能想到的各种方法,只有setgeometry()函数设置滚动区域的固定大小后才可以显示,但是我里面的控件是动态添加的,无法确定大小。 (2017-03-28 09:54) 
m_Area = new QScrollArea(this);
QRect rect = m_Area->geometry();
QWidget * widget = new QWidget(this);
m_Area->setWidget(widget);
widget->setMinimumHeight(rect.height() + 1000);
简单的说就是Area里面widget的最小高度大于Area本身的最大高度。你widget里的控件是动态加载的就要保证widget里面的控件要有最小大小,不然widget默认用适应Area的大小,setLayout的话会把里面的控件全压缩掉的。
#7 回 kongxz 的帖子 [太阳真圆 03-29 15:24]
kongxz:
m_Area = new QScrollArea(this);
QRect rect = m_Area->geometry();
QWidget * widget = new QWidget(this);
m_Area->setWidget(widget);
.......
QWidget *taskRdcwdg = new QWidget(this);
//窗口内添加布局
QHBoxLayout *tmpTaskRdcHLayout = new QHBoxLayout(taskRdcwdg);
//设置滚动区域
QScrollArea *rdcScrollArea = new QScrollArea;
rdcScrollArea->setBackgroundRole(QPalette::Dark);
QRect tmpRect = rdcScrollArea->geometry();
rdcScrollArea->setWidgetResizable(true);
taskRdcwdg->setMinimumWidth(tmpRect.width()+10);
rdcScrollArea->setWidget(taskRdcwdg);
//设置滚动条
rdcScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
rdcScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
taskVLayout->addWidget(rdcScrollArea);

那个是我现在的代码,但是运行结果还是和以前一样啊,如下图所示:

但是结果应该是这样的:
#8 回 太阳真圆 的帖子 [kongxz 03-29 19:22]
太阳真圆:         QWidget *taskRdcwdg = new QWidget(this);
        //窗口内添加布局
        QHBoxLayout *tmpTaskRdcHLayout = new QHBoxLayout(taskRdc .. (2017-03-29 15:24) 
你给的图太那啥了,我都不知道啥意思?
你可以取出有问题时候的taskRdcwdg的rect,然后不加ScrollArea,设置taskRdcwdg的大小为rect,不要在外面加任何layout,估计显示的结果是一样的。这是你taskRdcwdg布局的问题。
taskRdcwdg->setMinimumWidth(tmpRect.width()+10)应该是有效果的,你这没效果我也不清楚原因,你可以加个500,1000试试,或者再设置HorizontalScrollBarPolicy AlwaysOn看看是不是有那么大的宽度给你拖动。

<< 1 2 >> (2/2)

回复 发表
主题 版块