您的位置:首页 > 编程语言 > Qt开发

实现QQ抽屉效果(QToolBox 和QToolButton)

2010-12-08 18:07 633 查看
头文件

drawer.h

view plaincopy to clipboardprint?
#ifndef DRAWER_H
#define DRAWER_H
#include <QToolBox>
class QToolButton;
#include <QObject>
//QToolBox提供一种列状的层叠窗体

class Drawer:public QToolBox{
Q_OBJECT
public:
Drawer(QWidget *parent=0);
QToolButton *toolButton1_1;
QToolButton *toolButton1_2;
private slots:
void slotCls();

};

#endif // DRAWER_H

实现文件

main.cpp

view plaincopy to clipboardprint?
#include <QApplication>
#include <QToolButton>
#include <QToolBox>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QWidget>
#include <QTextCodec>
#include <QMessageBox>
#include "drawer.h"

//构造函数初始化布局控件
Drawer::Drawer(QWidget *parent):QToolBox(parent){
//设置标题
setWindowTitle(tr("QQ"));
//创建一个 QGroupBox 对象
QGroupBox *groupBox1=new QGroupBox(this);
//创建按钮1
toolButton1_1=new QToolButton;
toolButton1_1->setText(tr("test"));
toolButton1_1->setAutoRaise(TRUE); //鼠标离开时 按钮恢复到谈起状态
toolButton1_1->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); //文字显示在图标下面

//创建一个 QGroupBox 对象
QGroupBox *groupBox2=new QGroupBox(this);
//创建按钮二
toolButton1_2=new QToolButton;
toolButton1_2->setText(tr("test"));
toolButton1_2->setAutoRaise(TRUE);
toolButton1_2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

//第一个抽屉
QVBoxLayout *layout1=new QVBoxLayout(groupBox1);
layout1->setMargin(10);
layout1->setAlignment(Qt::AlignHCenter);
layout1->addWidget(toolButton1_1);
//第二个抽屉
QVBoxLayout *layout2=new QVBoxLayout(groupBox2);
layout2->setMargin(10);
layout2->setAlignment(Qt::AlignHCenter);
layout2->addWidget(toolButton1_2);
//把抽屉插入到 QToolBox中
this->addItem((QWidget *)groupBox1,tr("userName"));
this->addItem((QWidget *)groupBox2,tr("homePage"));
connect(toolButton1_1,SIGNAL(clicked()),this,SLOT(slotCls()));
}
void Drawer::slotCls(){
QMessageBox *msg=new QMessageBox(this);
msg->setText("user name is Riren");
msg->exec();
}

int main(int argc,char ** argv){
QApplication app(argc,argv);
Drawer drawc;
drawc.show();
return app.exec();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: