背景:让滚动区域中的内容的左右随着窗口自适应,上下内容超出屏幕,出现滚动。
(1)setWidgetResizable(true)
当滚动区域的widgetResizable 属性为False时,在Designer中或应用界面手工调整滚动区域部件的大小时,内容部署层不会跟随调整,但可以通过应用代码进行调整,具体调整方法请见下面介绍。
当滚动区域的widgetResizable 属性为True时,在Designer中或应用界面手工调整滚动区域部件的大小时,内容部署层会跟随调整。但验证widgetResizable 为True时,此时通过应用代码进行调整调整滚动区域部件的大小没有任何效果。
滚动区域的widgetResizable属性缺省为False时,可以通过方法widgetResizable()和setWidgetResizable(bool resizable)来访问widgetResizable属性。
(2)setFrameShape设置控件窗体类型
Qt的控件属性设置既可以在Qt设计器中设置,也可以在代码中设置,还以用qss语法修饰,下面介绍如何修改控件的窗体类型,在Qt设计器中有一项frameShape, 继承于QFrame的窗体控件可以修改该属性达到不同的效果,例如QTableView, QTreeView等。 可以设置默认的窗体类型,例如有边框,无边框,当你觉得默认的类型不好看时,可以自己修改。
在代码中也可以设置,类型用宏Shape表示
enum Shape {
NoFrame = 0, // no frame
Box = 0x0001, // rectangular box
Panel = 0x0002, // rectangular panel
WinPanel = 0x0003, // rectangular panel (Windows)
HLine = 0x0004, // horizontal line
VLine = 0x0005, // vertical line
StyledPanel = 0x0006 // rectangular panel depending on the GUI style
};
可以根据各种需求动态设置不同的窗体类型
scrollArea->setFrameShape(QFrame::Shape::NoFrame);
(3)setHorizontalScrollBarPolicy() 水平/垂直滑动条 及显示/不显示 设置
setHorizontalScrollBarPolicy() //设置水平滚动条
// 此属性保存水平滚动条的策略
// 默认策略是Qt::ScrollBarasNeed (当内容太大而无法容纳时显示滚动条,否则不显示滚动条。这是默认设置。)
setVerticalScrollBarPolicy() //设置垂直滚动条
其中参数可设置为 ScrollBarAlwaysOff 和 ScrollBarAlwaysOn 两种
ScrollBarAlwaysOff 不显示滚动条 ScrollBarAlwaysOn 显示滚动条
(4)设置滑动条区域背景颜色为透明
QPalette pa = scrollArea->palette();
pa.setBrush(QPalette::Window, Qt::transparent); // 利用QPalette 改变控件 画刷颜色的值
scrollArea->setPalette(pa);
QPalette类相当于对话框或控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都包含一个QPalette对象,在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。
具体QPalette使用可以参考:Qt: 调色板QPalette类用法详解(附实例、源码)_好儿郎~志在四方-CSDN博客