QFrame类是带有边框的部件的基类,常用的部件有以下几种:
部件 |
QLabel |
QLCDNumber |
QSplitter |
QStackedWidget |
QToolBox |
QAbstractScrollAea(带有滚动区域的) |
边框的属性:
使用函数:setFareamShape()
常量 | 属性 |
QFrame::NoFrame | 不绘制 |
QFrame::Box | 生成一个边框 |
QFrame::Panel | 绘制一个面板,使内容表现的突起 |
QFrame::StyledPanel | 绘制一个矩形面版 |
QFrame::HLine | 绘制一条水平线 |
QFrame::VLine | 绘制一条垂直线 |
QFrame::WinPanel | 绘制类似Window2000的矩形面板 |
边框阴影的取值:
使用函数:setFrameShadow()
常量 | 描述 |
QFrame::Plain | 边框和内容都没有3D效果 |
QFrame::Raised | 边框和内容都没表现为凸起,具有3D效果 |
QFrame::Sunken | 边框和内容都没表现为凹陷,具有3D效果 |
一:QLabel
QLabel常用于显示图片和文字。
1.QLabel显示文本:
bool ok;
QFont font =QFontDialog::getFont(&ok,QFont("宋体",20),this,tr("获取颜色"));//获取字体
QLabel *p1=new QLabel(this);
p1->move(200,200);//移动控件位置
p1->setText("Label");//设置内容
p1->setFont(font);//设置字体
p1->setFrameShape(QFrame::Box);//设置边框
p1->setFrameShadow(QFrame::Raised);//设置阴影
2.在Label显示添加图片
QLabel *p2=new QLabel(this);
p2->move(200,400);
p2->setPixmap(QPixmap(":/new/prefix1/E:/图片/24110307_6.jpg"));//括号内为路径
p2->resize(100,100);
3.在Label显示动图
QLabel *p3=new QLabel(this);
QMovie *movie=new QMovie(":/new/prefix1/E:/图片/132eb06b80694d55a1367bd74a78b154.gif");
p3->move(400,200);
p3->setMovie(movie);
p3->resize(100,100);
movie->start();//播放
二:QLCDNumber
使数码字符显示类似液晶数字一样的效果。
QLCDNumber *lcd=new QLCDNumber(this);//生成一个液晶显示
lcd->move(100,50);
QLCDNumber的一些函数:
函数 | 含义 |
setSmallDecimalPoint() | 显示小数点 |
setDigitCount(number) | 设置位数 |
setMode(QLCDNumber::Mode) | 设置进制数 |
setSegmentStyle(QLCDNumber::SegmentStyle) | 设置显示样式 |
display() | 指定显示数值 |
QLCDNumber::mode
Bin | 二进制 |
Oct | 八进制 |
Dec | 十进制 |
Hex | 十六进制 |
QLCDNumber::SegmentStyle
Outline | 生成用背景色填充的凸起段 |
Filled(默认值) | 生成用前景色填充的凸起线段。 |
Flat | 生成用前景色填充的平整线段。 |
QLCDNumber *lcd=new QLCDNumber(this);
lcd->move(100,50);
lcd->setFixedSize(100,30);
lcd->setSmallDecimalPoint(true);//显示小数点
lcd->setDigitCount(5);//设置显示的位数
lcd->setMode(QLCDNumber::Bin);//显示的进制数
lcd->display("10");//显示的值
三:QStackedWidget
QStackedWidget类提供一个部件栈,栈中可以存储多个界面,每个界面可以拥有自己的部件,但一次只能显示一个界面,一般和QListWidget一起使用。
实现点击按键,切换页面:
1.在widget.h文件中添加以下控件
QStackedWidget *swidget;
QListWidget *lwidget;
QLabel *lb1;
QLabel *lb2;
QLabel *lb3;
2.在widget中实现功能
swidget=new QStackedWidget(this);
lwidget=new QListWidget(this);
QHBoxLayout *layout=new QHBoxLayout(this);//创建一个水平布局
layout->addWidget(lwidget);//在布局中添加lwidget控件
layout->addWidget(swidget);//在布局中添加swidget控件
lwidget->insertItem(0,"1");//添加选项 , 行数和显示的内容
lwidget->insertItem(1,"2");//添加选项 , 行数和显示的内容
lwidget->insertItem(2,"3");//添加选项 , 行数和显示的内容
lb1=new QLabel("第一页");
lb2=new QLabel("第二页");
lb3=new QLabel("第三页");
swidget->addWidget(lb1);//swidget中添加控件
swidget->addWidget(lb2);
swidget->addWidget(lb3);
layout->setStretchFactor(lwidget,1);//设置在桌面上占据的比例
layout->setStretchFactor(swidget,4);
connect(lwidget,&QListWidget::currentRowChanged,swidget,&QStackedWidget::setCurrentIndex);//连接两个控件
效果展示:
四:QToolBOX
QToolBox类提供一列层叠窗口部件。
常用的函数:
addItem() | 添加控件 |
insterItem() | 插入控件 |
生成一个QToolBox控件
QToolBox *tool=new QToolBox(this);
QLabel *l1=new QLabel("111111111");
QLabel *l2=new QLabel("222222222");
tool->addItem(l1,"第一页");
tool->addItem(l2,"第二页");