注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沙漠里de烟雨

原创分享,禁止转载

 
 
 

日志

 
 

给控件增加滚动条之--QScrollArea  

2014-01-03 18:46:17|  分类: QT5.x与QML |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
aaa::aaa(QWidget *parent): QListView(parent)
{
for(int i=1;i<=10;i++)
{
QPushButton* btn = new QPushButton(QString("button%0").arg(i),this);
btn->setFixedSize(500,100);
btn->move(0,(i-1)*100);
btn->show();
}
this->setResizeMode(QListView::Adjust);
this->setViewMode(QListView::ListMode);
this->setFixedSize(500,1000);
}



QScrollArea* scrollArea = new QScrollArea(this);
scrollArea->setWidget(a);
scrollArea->setAlignment(Qt::AlignLeft);
// scrollArea->setBackgroundRole(QPalette::Dark); 
QGridLayout* layout = new QGridLayout(this);
layout->addWidget(scrollArea);
setLayout(layout);

如果你自定义的特殊控件用此法添加的滚动条达不到你的要求,可以使用用如下方法:
class MyWidget : public  QWidget
{
    public :
  MyWidget(..)
{
yourWidget = new YourWidget(this);
}
public slots:
void  MoveView(int  len)
{
yourWidget->move(0, -len );
}

  private:
 YourWidget*  yourWidget;

};

class  www : public QWidget
{
public :
www()
{
myVScrollbar = new QScrollBar(this);
myWidget = new MyWidget(this);

QHBoxLayout* layout = new QHBoxLayout(this);
layout->addWidget(myWidget,0,Qt::AlignLeft);
layout->addWidget( myVScrollbar ,0,Qt::AlignRight);
layout->setMargin(0);
layout->setSpaceing(0);
setLayout(layout);

connect(myScrollBar,SIGNAL(valueChanged(int)),myWidget,SLOT(MoveView(int)));
}
private:
QScrollBar*   myVScrollbar;
MyWidget*    myWidget;

};

这种方法是最基础的方法,就因为基础,所以你要做更多的处理,比如,www 的窗口大小 改变 时,yourWidget的大小 也应该改变,且yourWidget的大小要不断resize()成能够显示你所包容的所有子控件时的大小。等等。
顺便一句,MyWidget 可能还要重写以下两个函数方能使用布局(QLayout)的类。
QSizePolicy sizePolicy() const
{
QSizePolicy  sizePolicy;
sizePolicy.setHorizontalPolicy(QSizePolicy::Expanding);
sizePolicy.setVerticalPolicy(QSizePolicy::Expanding);
return sizePolicy;
}
QSize minimumSizeHint() const
{
return QSize(WIDTH,HEIGHT);
}
如若想更详细了解,请参考博文(下一篇) 《 Qt---QListView中放置自定义控件并添加滚动条》
  评论这张
 
阅读(6121)| 评论(1)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017