//本程序由QT5 creator编译可运行
//dialog.h
1 #ifndef DIALOG_H
2 #define DIALOG_H
3
4 #include <QDialog>
5
6 class Dialog : public QDialog
7 {
8 Q_OBJECT
9
10 public:
11 Dialog(QWidget *parent = 0);
12 ~Dialog();
13 };
14
15 #endif // DIALOG_H
//drawer.h
1 #ifndef DRAWER_H
2 #define DRAWER_H
3 #include <QToolBox>
4 #include <QToolButton>
5
6 class Drawer : public QToolBox
7 {
8 Q_OBJECT
9 public:
10 Drawer(QWidget *parent = 0, Qt::WindowFlags f = 0);
11 private:
12 QToolButton *toolBtn1_1;
13 QToolButton *toolBtn1_2;
14 QToolButton *toolBtn1_3;
15 QToolButton *toolBtn1_4;
16 QToolButton *toolBtn1_5;
17 QToolButton *toolBtn2_1;
18 QToolButton *toolBtn2_2;
19 QToolButton *toolBtn3_1;
20 QToolButton *toolBtn3_2;
21
22 };
23
24 #endif // DRAWER_H
//dialog.cpp
1 #include "dialog.h"
2
3 Dialog::Dialog(QWidget *parent)
4 : QDialog(parent)
5 {
6 }
7
8 Dialog::~Dialog()
9 {
10
11 }
//drawer.cpp
//代码中,图片与build-MyQQExample-Desktop_Qt_5_6_0_MinGW_32bit-Debug放置同一个文件夹下面
1 #include "drawer.h"
2 #include <QGroupBox>
3 #include <QVBoxLayout>
4
5 Drawer::Drawer(QWidget *parent, Qt::WindowFlags f)
6 :QToolBox(parent, f)
7 {
8 setWindowTitle (tr("My QQ")); //设置主窗体的标题
9 //创建一个QToolButton类实例,分别对应于抽屉中的每一个按钮
10 toolBtn1_1 = new QToolButton;
11 toolBtn1_1->setText (tr("张三")); //设置按钮的文字
12 toolBtn1_1->setIcon (QPixmap("11.png")); //设置按钮的图标
13 toolBtn1_1->setIconSize (QPixmap("11.png").size ());
14 toolBtn1_1->setAutoRaise (true); //当鼠标离开时,按钮自动恢复为弹起状态
15 //设置按钮的ToolButtonStyle属性->主要用来描述按钮的文字和图标的显示方式.
16 //Qt::ToolButtonTextBesideIcon-->文字在图标旁边
17 toolBtn1_1->setToolButtonStyle (Qt::ToolButtonTextBesideIcon);
18 toolBtn1_2 = new QToolButton;
19 toolBtn1_2->setText (tr("李四"));
20 toolBtn1_2->setIcon (QPixmap("12.png"));
21 toolBtn1_2->setIconSize (QPixmap("12.png").size ());
22 toolBtn1_2->setAutoRaise (true);
23 toolBtn1_2->setToolButtonStyle (Qt::ToolButtonTextBesideIcon);
24 toolBtn1_3 = new QToolButton;
25 toolBtn1_3->setText (tr("王五"));
26 toolBtn1_3->setIcon (QPixmap("13.png"));
27 toolBtn1_3->setIconSize (QPixmap("13.png").size ());
28 toolBtn1_3->setAutoRaise (true);
29 toolBtn1_3->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
30 toolBtn1_4 = new QToolButton;
31 toolBtn1_4->setText(tr("小赵"));
32 toolBtn1_4->setIcon(QPixmap("14.png"));
33 toolBtn1_4->setIconSize(QPixmap("14.png").size());
34 toolBtn1_4->setAutoRaise(true);
35 toolBtn1_4->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
36 toolBtn1_5 = new QToolButton;
37 toolBtn1_5->setText(tr("小孙"));
38 toolBtn1_5->setIcon(QPixmap("155.png"));
39 toolBtn1_5->setIconSize(QPixmap("155.png").size());
40 toolBtn1_5->setAutoRaise(true);
41 toolBtn1_5->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
42 //创建一个QGroupBox类实例,在本例中对应每一个抽屉.
43 //QGroupBox *groupBox2 = new QGroupBox。。创建其余两栏抽屉
44 QGroupBox *groupBox1 = new QGroupBox;
45 //布局
46 //用来设置抽屉内各个按钮的布局
47 QVBoxLayout *layout1 = new QVBoxLayout(groupBox1);
48 //布局中各个窗体显示间距
49 layout1->setMargin (10);
50 //布局中各个窗体显示位置
51 layout1->setAlignment (Qt::AlignLeft);
52 //加入抽屉内的各个按钮
53 layout1->addWidget (toolBtn1_1);
54 layout1->addWidget (toolBtn1_2);
55 layout1->addWidget (toolBtn1_3);
56 layout1->addWidget (toolBtn1_4);
57 layout1->addWidget (toolBtn1_5);
58 //插入一个占位符-使所有按钮能靠上对齐,并且在整个抽屉大小发生改变时保证按钮大小不发生改变
59 layout1->addStretch ();
60 toolBtn2_1 = new QToolButton;
61 toolBtn2_1->setText ("老王");
62 toolBtn2_1->setIcon (QPixmap("21.png"));
63 toolBtn2_1->setIconSize (QPixmap("21.png").size ());
64 toolBtn2_1->setAutoRaise (true);
65 toolBtn2_1->setToolButtonStyle (Qt::ToolButtonTextBesideIcon);
66 toolBtn2_2 = new QToolButton;
67 toolBtn2_2->setText (tr("小张"));
68 toolBtn2_2->setIcon (QPixmap("22.png"));
69 toolBtn2_2->setIconSize (QPixmap("22.png").size ());
70 toolBtn2_2->setAutoRaise(true);
71 toolBtn2_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
72 QGroupBox *groupBox2 = new QGroupBox;
73 QVBoxLayout *layout2 = new QVBoxLayout(groupBox2);
74 layout2->setMargin (10);
75 layout2->setAlignment (Qt::AlignLeft);
76 layout2->addWidget (toolBtn2_1);
77 layout2->addWidget (toolBtn2_2);
78 toolBtn3_1 =new QToolButton;
79 toolBtn3_1->setText(tr("小陈"));
80 toolBtn3_1->setIcon(QPixmap("31.png"));
81 toolBtn3_1->setIconSize(QPixmap("31.png").size());
82 toolBtn3_1->setAutoRaise(true);
83 toolBtn3_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
84 toolBtn3_2 =new QToolButton;
85 toolBtn3_2->setText(tr("小李"));
86 toolBtn3_2->setIcon(QPixmap("32.png"));
87 toolBtn3_2->setIconSize(QPixmap("32.png").size());
88 toolBtn3_2->setAutoRaise(true);
89 toolBtn3_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
90 QGroupBox *groupBox3=new QGroupBox;
91 QVBoxLayout *layout3=new QVBoxLayout(groupBox3);
92 layout3->setMargin(10);
93 layout3->setAlignment(Qt::AlignLeft);
94 layout3->addWidget(toolBtn3_1);
95 layout3->addWidget(toolBtn3_2);
96 //将准备好的抽屉插入ToolBox中
97 this->addItem ((QWidget*)groupBox1, tr("我的好友"));
98 this->addItem ((QWidget*)groupBox2, tr("陌生人"));
99 this->addItem ((QWidget*)groupBox3, tr("黑名单"));
100 }
//main.cpp
1 #include "dialog.h"
2 #include <QApplication>
3 #include "drawer.h"
4
5 int main(int argc, char *argv[])
6 {
7 QApplication a(argc, argv);
8
9 Drawer drawer;
10 drawer.show ();
11 return a.exec();
12 }
运行效果,如图所示.