QFrame 类是带有边框的部件的基类。带边框部件最主要的特点就是可以有一个明显的边界框架。QFrame 类的主要功能就是用来实现不同的边框效果,这主要是由边框形状(Shape)和边框阴影(Shadow)组合来形成的。
主要边框形状如表所示:
常量 | 描述 |
---|---|
QFrame::NoFrame | QFrame 不进行绘制 |
QFrame::Box | QFrame 在它的内容四周绘制一个边框 |
QFrame::Panel | QFrame 绘制一个面板,使得内容表现为凸起或者凹陷 |
QFrame::StyledPanel | 绘制一个矩形面板,它的效果依赖于当前的 GUI 样式,可以突起或凹陷 |
QFrame::HLine | QFrame 绘制一条水平线,没有任何框架(可以作为分离器) |
QFrame::VLine | QFrame 绘制一条垂直线,没有任何框架(可以作为分离器) |
QFrame::WinPanel | 绘制一个类似于 Windows2000 中的矩形面板,可以凸起或者凹陷 |
边框阴影如表所示:
常量 | 描述 |
---|---|
QFrame::Plain | 边框和内容没有 3D 效果,与四周界面在同一水平面上 |
QFrame::Raised | 边框和内容表现为凸起,具有 3D 效果 |
QFrame::Sunken | 边框和内容表现为凹陷,具有 3D 效果 |
边框效果如图所示:
QLabel 是 Qt 中用于显示文本和图像的小部件。它可以用于显示简单的文本、图片和动画等。
通过 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();
}
#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() 函数是用来设置是否自动打开链接,此处将自动在浏览器中打开!
通过 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();
}
通过 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 可以显示几乎任意大小的数字。可以显示十进制、十六进制、八进制或二进制数。这些数字和其他符号可以显示: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 类提供了一个部件栈,可以有多个界面(称为页面),每个界面可以拥有自己的部件,不过每次只能显示一个界面。
#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 用于组织和切换一组相关的工具或选项。它通常被用作侧边栏,允许用户选择不同的工具或类别,从而实现对应内容的显示。
#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 是一个分割窗口小部件,允许用户通过拖动分割条来调整窗口中子部件的大小。它通常用于创建分割视图或者在应用程序中实现可调整大小的区域,以适应用户的需求。
#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 是抽象类,在此暂时不做介绍,后面会介绍它的派生类控件!