目录
一、简介
工具盒类又称为QToolBox。QToolBox提供了一种列状的层叠窗体,而QToolBox提供了一种快速访问命令或选择项的按钮,通常在工具中使用。
抽屉效果是软件界面设计中的一种常用形式,可以以一种动态直观的方式在大小有限的界面上扩展出更多功能。
二、课本实例MyQQExample运行效果
三、代码
main.cpp要做出修改
#include "dialog.h"
#include <QApplication>
#include "drawer.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//Dialog w;
//w.show();
Drawer d;
d.show();
return a.exec();
}
drawer.h
#ifndef DRAWER_H
#define DRAWER_H
#include <QToolButton>
#include <QLayout>
#include <QToolBox>
#include <QPixmap>
#include <QBoxLayout>
#include <QGroupBox>
class Drawer : public QToolBox
{
Q_OBJECT
public:
Drawer(QWidget * parent = 0, Qt::WindowFlags f = 0);
private:
QToolButton * btn1_1;
QToolButton * btn1_2;
QToolButton * btn2_1;
//QToolButton * btn2_2;
//QToolButton * btn3_1;
//QToolButton * btn3_2;
};
#endif // DRAWER_H
drawer.cpp
#include "drawer.h"
Drawer::Drawer(QWidget * parent, Qt::WindowFlags f):QToolBox(parent,f)
{
setWindowTitle(tr("My QQ"));
//1
btn1_1 = new QToolButton;//创建一个QToolButton类实例,分别对应于抽屉中的每个按钮
btn1_1->setText(tr("张三"));//设置按钮文字
btn1_1->setIcon(QPixmap("QQ.jpg"));//设置按钮图标
btn1_1->setIconSize(QPixmap("QQ.jpg").size());//设置按钮大小,与图标相同
btn1_1->setAutoRaise(true);//当鼠标离开时,按钮自动回复为弹起状态
btn1_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字显示在图标旁边
btn1_2 = new QToolButton;
btn1_2->setText(tr("李四"));
btn1_2->setIcon(QPixmap("QQ3.jpg"));
btn1_2->setIconSize(QPixmap("QQ3.jpg").size());
btn1_2->setAutoRaise(true);
btn1_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
QGroupBox * groupBox1 = new QGroupBox;//创建一个QGroupBox对应一个抽屉
QVBoxLayout * layout1 = new QVBoxLayout(groupBox1);//用来设置抽屉内各个按钮的布局
layout1->setMargin(10);
layout1->setAlignment(Qt::AlignCenter);
//加入抽屉内的各个按钮
layout1->addWidget(btn1_1);
layout1->addWidget(btn1_2);
//插入一个占位符
layout1->addStretch();
//2
btn2_1 = new QToolButton;
btn2_1->setText(tr("猜猜我是谁"));
btn2_1->setIcon(QPixmap("QQ2.jpg"));
btn2_1->setIconSize(QPixmap("QQ2.jpg").size());
btn2_1->setAutoRaise(true);
btn2_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
QGroupBox * groupBox2 = new QGroupBox;
QVBoxLayout * layout2 = new QVBoxLayout(groupBox2);
layout2->setMargin(10);
layout2->setAlignment(Qt::AlignCenter);
//加入抽屉内的各个按钮
layout2->addWidget(btn2_1);
//将准备好的抽屉插入ToolBox中
this->addItem((QWidget*)groupBox1,tr("我的好友"));
this->addItem((QWidget*)groupBox2,tr("陌生人"));
}