Qt實現QQ界面


1.Qt實現QQ界面是通過QToolBox類來實現的,基本結構是:QToolBox里面裝QGroupBox,然后QGroupBox里面裝QToolButton,設置好相關屬性即可

2.定義類繼承QToolBox

class Drawer : public QToolBox

3.在構造函數中完成布局,頭文件代碼展示,為了避免代碼重復定義初始化函數

initToolButton
#ifndef DRAWER_H
#define DRAWER_H

#include <QWidget>
#include <QToolBox>//工具盒類,層疊窗口,抽屜效果實現
#include <QToolButton>

class Drawer : public QToolBox
{
    Q_OBJECT

public:
    Drawer(QWidget *parent=0,Qt::WindowFlags f = 0);
    ~Drawer();
    void initToolButton(QToolButton  **tb,QString name,QString pathpic);


private :
    QToolButton *toolbtn1;
    QToolButton *toolbtn2;
    QToolButton *toolbtn3;
    QToolButton *toolbtn4;
    QToolButton *toolbtn5;
    QToolButton *toolbtn11;
    QToolButton *toolbtn12;
    QToolButton *toolbtn21;
    QToolButton *toolbtn22;

};

#endif // DRAWER_H

4.主要代碼為.cpp文件

#include "drawer.h"
#include<QGroupBox>
#include <QVBoxLayout>
#include <QDebug>


Drawer::Drawer(QWidget *parent, Qt::WindowFlags f):QToolBox(parent,f)
{
    setWindowTitle("QQ");
    initToolButton(&toolbtn1,"張遠山","1.png");
    qDebug()<<"ok";
    initToolButton(&toolbtn2,"東奧","2.png");
    qDebug()<<"ok";
    initToolButton(&toolbtn3,"孫選成","3.png");
    qDebug()<<"ok";
    initToolButton(&toolbtn4,"司寬","4.png");
    qDebug()<<"ok";
    initToolButton(&toolbtn5,"張宇","5.png");
    qDebug()<<"ok";
    QGroupBox *gb1 = new QGroupBox;
    QVBoxLayout *lay1 = new QVBoxLayout(gb1);

    lay1->setMargin(10);
    lay1->setAlignment(Qt::AlignHCenter);

    lay1->addWidget(toolbtn1);
    lay1->addWidget(toolbtn2);
    lay1->addWidget(toolbtn3);
    lay1->addWidget(toolbtn4);
    lay1->addWidget(toolbtn5);
   // lay1->addStretch();

    initToolButton(&toolbtn11,"劉翔","11.png");
    initToolButton(&toolbtn12,"詹姆斯","12.png");
    QGroupBox *gb2 = new QGroupBox;
    QVBoxLayout *lay2 = new QVBoxLayout(gb2);
    lay2->addWidget(toolbtn11);
    lay2->addWidget(toolbtn12);
    lay2->setMargin(10);
    lay2->setAlignment(Qt::AlignHCenter);

    initToolButton(&toolbtn21,"惠子","21.png");
    initToolButton(&toolbtn22,"名人","22.png");
    QGroupBox *gb3 = new QGroupBox;
    QVBoxLayout *lay3 = new QVBoxLayout(gb3);
    lay3->addWidget(toolbtn21);
    lay3->addWidget(toolbtn22);
    lay3->setMargin(10);
    lay3->setAlignment(Qt::AlignHCenter);

    //准備好的抽屜插入TOOlBox中
    this->addItem(gb1,"我的好友");
    this->addItem(gb2,"陌生人");
    this->addItem(gb3,"黑名單");





}

Drawer::~Drawer()
{

}

void Drawer::initToolButton(QToolButton **tb, QString name, QString pathpic)
{

    (*tb) = new QToolButton;
    (*tb)->setText(name);
    (*tb)->setIcon(QPixmap(pathpic));
    (*tb)->setIconSize(QSize(20,20));
    (*tb)->setAutoRaise(true);
    (*tb)->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);


}

5.

(*tb)->setIcon(QPixmap(pathpic));表示設置按鈕圖標

6.

(*tb)->setAutoRaise(true);表示鼠標離開時按鈕自動恢復為彈起狀態

7.

(*tb)->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);表示設置按鈕文字標簽在圖標旁邊

8.查看運行效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM