• 9187阅读
  • 4回复

怎样在QFrame上加QScrollBar(已解决) [复制链接]

上一主题 下一主题
离线磐石
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-26
要在一个固定大小的QFrame中有序的分布100个QPushButton,但因为QFrame太小了,只能看到一部分QPushButton,各位大侠们,请问一下,有没有办法给QFrame加上QScrollBar,通过下拉QScrollBar能看到所有QPushButton,

QFrame *frame;
QPushButton *Btn[100];

frame=new QFrame;
frame->resize(500,500);
int x=0,y=0;
for(int i=0;i<100;i++)
{
   Btn=new QPushButton(frame);
   Btn->setGeometry(QRect(10+x*80,10+y*80,60,60));    //每个按钮是60X60,间隔20
   x++;
  if(x==10)                //100个按钮布成10X10的矩阵
  {
     x=0;
     y++'
  }

}
从上面算得要能使所有按钮布的下,frame的size必须大于810X810,但实际(500X500)小于这个size,那么有一部分按钮就看不到了,请问一下,能不能给QFrame加上scrollAreaResized解决这个问题?
我直接这样做,但不行的
QScrollBar *VBar, *HBar;
VBar=new QScrollBar(Qt::Vertical,frame);
HBar=new QScrollBar(Qt::Horizontal,frame);

PS:解决方法见一楼
但我还想问一下,QScrollBar一般用在哪呢,怎么使用?
[ 此帖被磐石在2010-04-27 13:07重新编辑 ]
不怕做不到,只怕想不到
离线drylake
只看该作者 1楼 发表于: 2010-04-26
正确的使用方法。
在QFrame上增加一个子窗口QScrollArea,再在QScrollArea上增加一个子窗体QWidget,在这个子窗体QWidget上画上你希望要的那100个按钮。

QWidget可以比QScrollArea大,QScrollArea就是你可以看到的区域,通过拖动ScrollBar就可以看到全部的QWidget。
离线benbenmajia

只看该作者 2楼 发表于: 2010-04-27
可以不用QFrame
安然.....
离线磐石
只看该作者 3楼 发表于: 2010-04-27
Re:怎样在QFrame上加QScrollBar(已解决)
引用第1楼drylake于2010-04-26 21:58发表的  :
正确的使用方法。
在QFrame上增加一个子窗口QScrollArea,再在QScrollArea上增加一个子窗体QWidget,在这个子窗体QWidget上画上你希望要的那100个按钮。
QWidget可以比QScrollArea大,QScrollArea就是你可以看到的区域,通过拖动ScrollBar就可以看到全部的QWidget。

恩,谢谢,问题解决
不怕做不到,只怕想不到
离线liuxu_lx7
只看该作者 4楼 发表于: 2011-05-04
回 1楼(drylake) 的帖子
按照您的方法,我在UI Designer中按顺序创建,却不能正常的显示出ScrollBar。不解。。
这是在UI Designer中运行“预览”的 表现。
快速回复
限100 字节
 
上一个 下一个