QWidget如何做出滚动条的效果,?
例如,拖拉一下,将另外两个钮显示出来?
- C/C++ code
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ setFixedSize(300, 100); move(500, 300); QPushButton *pBtn0 = new QPushButton("btn0", this); //pBtn0->setFocusPolicy(Qt::NoFocus); pBtn0->setFixedSize(50, 50); pBtn0->move(50, 50); QPushButton *pBtn1 = new QPushButton("btn1", this); //pBtn1->setFocusPolicy(Qt::NoFocus); pBtn1->setFixedSize(50, 50); pBtn1->move(100+1, 50); QPushButton *pBtn2 = new QPushButton("btn2", this); //pBtn2->setFocusPolicy(Qt::NoFocus); pBtn2->setFixedSize(50, 50); pBtn2->move(50, 100+1); QPushButton *pBtn3 = new QPushButton("btn3", this); //pBtn3->setFocusPolicy(Qt::NoFocus); pBtn3->setFixedSize(50, 50); pBtn3->move(100+1, 100+1); QLine *pLine = new QLine(); pLine->setLine(100, 100-10, 200, 100-10);}[解决办法]
要是用滚动区域来做的话就比较简单了,其实就是三个widget叠加在一起(滚动区域是一个特殊的widget)
第一层就是你的固定大小的显示界面,中间一层就是滚动区域,第三层是你用来加载控件的widget,比如说你的一些控件超出了主界面的大小,这肯定是要有另外一个widget来加载的,不是凭空就能显示的,明白我的意思了吧,这里实际上你的主界面就只是一个窗口的作用了,实际完成加载控件的是第三层widget。
具体例子的话很简单:
QScrollArea *areaWidget = new QScrollArea(QWidget *patent);
areaWidget->setWidget(widget_3);
这样就搞定了,new的时候可以指定parent是你的mainwindow主界面,不指定的话就用个layout
setWidget的时候参数是你实际加载控件的那个widget,你就把它当做一个普通的widget就好理解了
滚动区域封装好了滚动条,不用你再去单独的计算滚动条的比例什么的,非常的好用
看在这么辛苦的份上,楼主记得给分啊