一.QFrame类

1.描述

QFrame的父类是QWIdget,主要用来控制边框的样式,例如突起、凹下、阴影。

下面的图就是各种效果和不同线号出来的效果

2.常用API

a.样式设定

m_frame->setFrameShape(QFrame::WinPanel);   //样式设定
m_frame->frameShape();                    //获取样式(int)
//样式枚举值
//QFrame.NoFrame   //无样式——返回值0
//QFrame.Box       //——返回值1
//QFrame.Panel    //——返回值2
//QFrame.WinPanel //闹不大清,和第六个差不多,官方文档不建议使用——返回值3
//QFrame.HLine    //横线——返回值4
//QFrame.VLine    //竖线——返回值5
//QFrame.StyledPanel //矩形面板,外观取决于当前GUI样式——返回值6

b.阴影效果

m_frame->setFrameShadow(QFrame::Sunken);        //设置框架阴影效果
m_frame->frameShadow();                         //获取框架阴影效果
//QFrame.Plain                       //框架和内容无相对3D效果——返回值16
//QFrame.Raised                    //框架突起显示——返回值32
//QFrame.Sunken                   //框架凹陷,返回值48

c.线宽设定

m_frame->setLineWidth(10);   //设置外线宽度
m_frame->lineWidth();      //获取外线宽度
m_frame->setMidLineWidth(5);//设置中线宽度
m_frame->midLineWidth();   //获取中线宽度
m_frame->frameWidth();     //获取总线宽

发现打印的线宽是52,在Box的突起样式中是有外线中线和内线的,内线的线宽和外线一致。所以总线宽就是52

d.样式设定的时候可以用管道符“|”所以下面两个代码是一样的效果

//方式1
m_frame->setFrameStyle(QFrame::Box|QFrame::Raised);
//方式2
m_frame->setFrameShape(QFrame::Box);
m_frame->setFrameShadow(QFrame::Raised);

但是用FrameStyle()获取样式则是所有效果的"|"运算。

e.边框矩形限制
m_frame->setFrameRect(QRect(10,10,10,10)); //设定框架的矩形限制
m_frame->frameRect(); //获取框架矩形范围限制

3.信号

QFame的信号都是继承自QWidget的,没有特殊的信号,就不再说明了。

二.QAbstractScrollArea类

1.描述

由于有些时候控件内部内容需要滚动查看,就把QAbstractScrollArea抽象出来了,它是滚动区域的低级抽象,继承的父类是QFrame。

2.功能作用

QAbstractScrollArea类为一个抽象类,无法直接实例化,我们通过它的一个子类QTextEdit来说明它。

QTextEdit *m_edit = new QTextEdit(this);

a.设置水平垂直滚动条

m_edit->setHorizontalScrollBarPolicy();
m_edit->setVerticalScrollBarPolicy();

b.滚动条显示策略

m_edit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); //垂直滚动条策略
m_edit->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); //水平滚动条策略
m_edit->horizontalScrollBarPolicy(); //获取水平滚动条策略
m_edit->verticalScrollBarPolicy(); //获取垂直滚动条策略

//滚动条策略枚举值
//Qt.ScrollBarAsNeeded //需要时显示——0
//Qt.ScrollBarAlwaysOff //滚动条始终关闭——1
//Qt.ScrollBarAlwaysOn //滚动条始终显示——2

c.角落控件

我们可以在控件的右下角设置一个控件,可以把QTextEdit()的右下角添加一个按钮

QPushButton *m_bt = new QPushButton("&C",m_edit);
m_edit->setCornerWidget(m_bt);   //设置角落控件
m_edit->cornerWidget();         //获取角落控件

效果图如下:

3.信号

QAbstractScrollArea的信号也是继承父类的,没有特别的信号。这里不再赘述。

源码:
mainwindow.c

#include "mainwindow.h"
#include <QWidget>
#include <QDialog>
#include <QFrame>
#include <QDebug>
#include <QTextEdit>
#include "qtextedit.h"
#include <QPushButton>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->resize(1000,600);m_frame = new QFrame(this);m_frame->setGeometry(100,100,200,200);m_frame->setFrameShape(QFrame::Box);       //设置样式m_frame->frameShape();                          //获取样式//    m_frame->setFrameShadow(QFrame::Sunken);        //设置框架阴影效果
//    m_frame->frameShadow();                         //获取框架阴影效果m_frame->setLineWidth(10);   //设置外线宽度m_frame->lineWidth();      //获取外线宽度m_frame->setMidLineWidth(5);//设置中线宽度m_frame->midLineWidth();   //获取中线宽度m_frame->frameWidth();     //获取总线宽m_frame->setFrameShape(QFrame::Box);       //设置样式m_frame->setFrameShadow(QFrame::Raised);        //设置框架阴影效果qDebug()<<m_frame->frameWidth();//方式1m_frame->setFrameStyle(QFrame::Box|QFrame::Raised);//方式2m_frame->setFrameShape(QFrame::Box);m_frame->setFrameShadow(QFrame::Raised);//    m_frame->setFrameRect(QRect(10,10,10,10));   //设定框架的矩形限制
//    m_frame->frameRect();                        //获取框架矩形范围限制QTextEdit *m_edit = new QTextEdit(this);m_edit->setGeometry(500,100,200,200);//    m_edit->setHorizontalScrollBarPolicy();
//    m_edit->setVerticalScrollBarPolicy();m_edit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);     //垂直滚动条策略m_edit->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);   //水平滚动条策略m_edit->horizontalScrollBarPolicy();                          //获取水平滚动条策略m_edit->verticalScrollBarPolicy();                            //获取垂直滚动条策略//滚动条策略枚举值//Qt.ScrollBarAsNeeded    //需要时显示——0//Qt.ScrollBarAlwaysOff   //滚动条始终关闭——1//Qt.ScrollBarAlwaysOn    //滚动条始终显示——2QPushButton *m_bt = new QPushButton("&C",m_edit);m_edit->setCornerWidget(m_bt);   //设置角落控件m_edit->cornerWidget();         //获取角落控件}MainWindow::~MainWindow()
{}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QFrame>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:QFrame *m_frame;
};
#endif // MAINWINDOW_H

Qt学习总结之QFrame和的QAbstractScrollArea相关推荐

  1. QT学习笔记(六):Qt5主窗口框架示例

    QT学习笔记(五):Qt5主窗口框架代码示例 一.添加编辑菜单:并在下拉菜单和工具栏中添加"打开文件"动作菜单 #include <QToolButton> #incl ...

  2. Qt学习之Qt基础入门(中)

    1. 前言 上一篇博客,总结了Qt的一些基础用法,这篇博客继续跟视频学习Qt的常用方法 Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门( ...

  3. QT学习笔记之对话框

    QT学习笔记之对话框 对话框是一种用户界面(窗口),它的主要功能是输出信息和接收用户的输入.在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互. 1)       模式对话框:用户只能与 ...

  4. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  5. Qt学习笔记,Qt国际化

    Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\     ...

  6. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

  7. 转载: Qt 学习之路 2归档

    Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/

  8. 对QT学习之路12-14的源代码补充与修正

    QT学习之路12-14的源代码有些不完整,为了更好的让大家学习,本人做了一点修正与补充,谢谢.源代码如下: 头文件: #ifndef MAINWINDOW_H #define MAINWINDOW_H ...

  9. Qt学习笔记之MySQL数据库

    一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...

最新文章

  1. 学计算机一定要加班吗,老梁推荐:毕业后经常加班的几类专业,工作压力大,对能力要求很高...
  2. mysql 对部分表binlog_MySQL抑制binlog日志中的BINLOG部分的方法
  3. pip安装库包以及.whl库包、.tar.gz库包具体方式
  4. Python+Anaconda+PyCharm的安装和基本使用
  5. 5G给边缘计算带来了什么?
  6. 5G NR QCL准共址详解
  7. 多维柔性作业调用_摆脱困境:从预定作业中调用安全方法
  8. Redmine incompatible character encodings: UTF-8 and ASCII-8BIT
  9. Gojs学习史(一):基本定义
  10. 每天一个linux命令-curl命令
  11. PMP第五版第一次考试相关提醒
  12. “引才入湘”大行动正式启动,CSDN携手万兴科技助力长沙打造人才品牌
  13. Bailian4022 买房子【迭代】
  14. Web开发基本准则-55实录-Web访问安全
  15. 基于stm32的无线多点温度采集系统设计
  16. win7显示安装程序正在启动服务器失败,Win7安装程序正在启动服务怎么办?
  17. Node.js 环境搭建过程中可能遇到的问题解决方案
  18. 使用Python和YOLO检测车牌
  19. GBase8a智能索引
  20. Chapter1 Vue基础

热门文章

  1. PHP后端发送Ajax情书,分享某平台上面发布的计算机编程情书
  2. C嘎嘎的运算符重载基础教程以及遵守规则【文末赠书三本】
  3. LF 和 CRLF 的区别
  4. SATA硬盘使用AHCI模式详解
  5. 怎样用matlab实现图像的缩放,matlab实现图像缩放
  6. 零基础学Java基础培训还是自学
  7. 数字支付领域的市场需求:移动支付与电子现金的市场需求
  8. Python常见经典语法
  9. python列表元素如何求和
  10. 人体行为检测手机传感器说明