第四篇:其他窗口部件 QFrame

QFrame 类族

QFrame 类是带有边框的部件的基类。带边框部件最主要的特点就是可以有一个明显的边界框架。QFrame 类的主要功能就是用来实现不同的边框效果,这主要是由边框形状(Shape)和边框阴影(Shadow)组合来形成的。

主要边框形状如表所示:

常量描述
QFrame::NoFrameQFrame 不进行绘制
QFrame::BoxQFrame 在它的内容四周绘制一个边框
QFrame::PanelQFrame 绘制一个面板,使得内容表现为凸起或者凹陷
QFrame::StyledPanel绘制一个矩形面板,它的效果依赖于当前的 GUI 样式,可以突起或凹陷
QFrame::HLineQFrame 绘制一条水平线,没有任何框架(可以作为分离器)
QFrame::VLineQFrame 绘制一条垂直线,没有任何框架(可以作为分离器)
QFrame::WinPanel绘制一个类似于 Windows2000 中的矩形面板,可以凸起或者凹陷

边框阴影如表所示:

常量描述
QFrame::Plain边框和内容没有 3D 效果,与四周界面在同一水平面上
QFrame::Raised边框和内容表现为凸起,具有 3D 效果
QFrame::Sunken边框和内容表现为凹陷,具有 3D 效果

边框效果如图所示:

在这里插入图片描述

QLabel

QLabel 是 Qt 中用于显示文本和图像的小部件。它可以用于显示简单的文本、图片和动画等。

  1. 显示文本

通过 void setText(const QString &) 函数设置显示内容:

  • 普通文本
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QLabel *label = new QLabel();
    label->resize(300, 200);

    label ->setText("hello world !");
    label->show();

    return a.exec();
}

在这里插入图片描述

  • HTML 富文本(显示一个链接)
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QLabel *label = new QLabel();
    label->resize(300, 200);

    label ->setText("<h1><a href=\"http://www.baidu.com\">百度一下</a></h1>");
    label ->setOpenExternalLinks(true);
    label->show();

    return a.exec();
}

在这里插入图片描述

其中 setOpenExternalLinks() 函数是用来设置是否自动打开链接,此处将自动在浏览器中打开!

  1. 显示图片

通过 void setPixmap(const QPixmap &) 设置显示图片。

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QLabel *label = new QLabel();
    label->resize(300, 200);

    label ->setPixmap(QPixmap("D:/HaveToLearn/blog code/label/test.png"));
    label->show();

    return a.exec();
}

在这里插入图片描述

  1. 显示动图

通过 void setMovie(QMovie *movie) 设置动图。

#include <QApplication>
#include <QLabel>
#include <QMovie>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QLabel *label = new QLabel();
    QMovie *movie = new QMovie("D:/HaveToLearn/blog code/label/test.gif");
    movie->start();
    label->setMovie(movie);
    label->show();

    return a.exec();
}

在这里插入图片描述

QLCDNumber

QLCDNumber 可以显示几乎任意大小的数字。可以显示十进制、十六进制、八进制或二进制数。这些数字和其他符号可以显示:0/O、1、2、3、4、5/S、6、7、8、9/g、减号、小数点、A、B、C、D、E、F、h、h、L、O、P、r、u、u、Y、冒号、度号(在字符串中指定为单引号)和空格。QLCDNumber用空格代替非法字符。QLCDNumber 常用于显示计时器、计数器等应用场景

数字显示方式如表所示:

常量描述
QLCDNumber::Hex十六进制
QLCDNumber::Dec十进制
QLCDNumber::Oct八进制
QLCDNumber::Bin二进制

视觉外观如表所示:

常量描述
QLCDNumber::Outline给出用背景色填充的凸起片段
QLCDNumber::Filled给出用windowText颜色填充的凸起分段
QLCDNumber::Flat给出用windowText颜色填充的扁平分段
#include <QApplication>
#include <QLCDNumber>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QLCDNumber lcdNumber;
    // 设置显示的数字个数
    lcdNumber.setDigitCount(10);
    // 设置显示模式为二进制
    lcdNumber.setMode(QLCDNumber::Bin);
    // 设置数码的显示样式
    lcdNumber.setSegmentStyle(QLCDNumber::Flat);
    lcdNumber.display(100);
    lcdNumber.show();

    return a.exec();
}

在这里插入图片描述

QStackedWidget

QStackedWidget 类提供了一个部件栈,可以有多个界面(称为页面),每个界面可以拥有自己的部件,不过每次只能显示一个界面。

#include <QApplication>
#include <QStackedWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QStackedWidget stackedWidget;
    // 添加页面
    QWidget w1;
    w1.setToolTip("这是第一个页面");
    QWidget w2;
    w2.setToolTip("这是第二个页面");
    stackedWidget.addWidget(&w1);
    stackedWidget.addWidget(&w2);
    stackedWidget.show();

    // 切换页面
    stackedWidget.setCurrentWidget(&w2);
//    stackedWidget.setCurrentIndex(1);

    return a.exec();
}

在这里插入图片描述

QStackedWidget 是一个功能强大而灵活的小部件,对于创建多页面应用程序非常有帮助。通过巧妙地使用它,可以提高你的应用程序的可维护性和用户体验。

QToolBox

QToolBox 用于组织和切换一组相关的工具或选项。它通常被用作侧边栏,允许用户选择不同的工具或类别,从而实现对应内容的显示。

#include <QApplication>
#include <QToolBox>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QToolBox toolBox;
    toolBox.setWindowTitle(QObject::tr("通讯录"));

    // 添加项
    QLabel label;
    label.setText("小小");
    toolBox.addItem(&label, QObject::tr("小学同学"));

    QLabel label1;
    label1.setText("小初");
    toolBox.addItem(&label1, QObject::tr("初中同学"));

    QLabel label2;
    label2.setText("小高");
    toolBox.addItem(&label2, QObject::tr("高中同学"));

    QLabel label3;
    label3.setText("小大");
    toolBox.addItem(&label3, QObject::tr("大学同学"));

    toolBox.show();

    return a.exec();
}

在这里插入图片描述

这就是一个典型的抽屉式通讯录,在这里只是简单介绍,更多功能可以自行探索。

QSplitter

QSplitter 是一个分割窗口小部件,允许用户通过拖动分割条来调整窗口中子部件的大小。它通常用于创建分割视图或者在应用程序中实现可调整大小的区域,以适应用户的需求。

#include <QApplication>
#include <QSplitter>
#include <QListView>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSplitter splitter;

    // 添加子部件
    QListView w;
    QListView w1;

    splitter.addWidget(&w);
    splitter.addWidget(&w1);

    splitter.setWindowTitle(QObject::tr("QSplitter 测试"));
    splitter.show();

    return a.exec();
}

在这里插入图片描述

QSplitter 是一个在 Qt 中非常有用的小部件,可帮助你实现灵活的窗口布局。通过灵活使用它,可以为用户提供更好的交互体验,并在应用程序中创建出动态而实用的界面。

QAbstractScrollArea

QAbstractScrollArea 是抽象类,在此暂时不做介绍,后面会介绍它的派生类控件!

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值