使用场景:自己设计了一个ui界面A,根据lineedit控件中的值新增n个界面A。
使用控件:Label控件,lineedit空间,Scroll Area空间,以及界面A(继承QWidget)。
注:除界面A为提前设计好之外,其余控件都是在设计窗口直接拉取。(原因,滚动条使用界面的比较方便)
1.在主界面新增Label控件,Lineedit控件,以及Scroll Area控件,并使用栅格布局
2.通过lineedit触发槽函数,进行界面A的多个创建。(界面A最好设计一个横竖轴的最大最小值,比如我需要他横向滑轮,所以我设置了界面A横轴最大值,竖轴最小值)
3.代码编写:设置ui界面中Scroll Area控件存在滚动条:
ui->scrollArea->setVerticalScrollBalPolicy(Qt::ScrollBarAsNeeded);
ui->scrollArea->setHorizontalScrollBalPolicy(Qt::ScrollBarAsNeeded);
4.因为在界面上设置了Scroll Area和其他控件组成了栅格布局,所以此处可以不设置scroll Area的实际尺寸。但是界面Scroll Area控件默认WidgetResizable为true,要通过界面属性或代码将其置为false。
5.Scroll Area控件自带一个widget的控件,名字一般为scrollAreaWidgetContents(可通过界面查询)。
6.在lineedit响应的槽函数中,根据lineedit中的值,实时设置scrollAreaWidgetContents的实际大小。(setGometry(0,0,w,h))
7.运行程序即可成功。
8.小问题:在新增界面A时,要注意判断其成员变量指针适当情况,尤其是在析构函数中要释放,否则关闭程序时会报错