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

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

2012-07-14 10:17 531 查看
头文件

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: