1. 程式人生 > 其它 >工具盒類實現QQ介面QToolBox

工具盒類實現QQ介面QToolBox

技術標籤:Qt開發自學qt5

目錄

例項:MyQQ介面

程式碼及詳細註釋如下:


工具盒類QToolBox

//抽屜效果20210115

//以動態直觀的方式在大小有限的介面上擴展出更多的功能

#include <QToolBox> //QToolBox工具盒類:列狀的層疊窗體

#include <QToolButton> //QToolButton提供快速訪問命令或選擇項的按鈕

例項:MyQQ介面

新建:Qt Widgets Application

專案名稱:MyQQ

類名:Dialog

基類:QDialog

不選擇“建立介面”

程式碼及詳細註釋如下:

【main.cpp】

#include "dialog.h" //使用哪個類就必須把包含該類的標頭檔案引用過來(*.h檔案中包含了相應類的定義)
#include <QApplication> //每個使用[Qt圖形化應用程式]中都必須使用一個QApplication物件
 //QApplication管理各種各樣的圖形化應用程式的廣泛資源、基本設定、控制流及事件處理等
#include "drawer.h"

int main(int argc, char *argv[]) //這裡是應用程式的入口。幾乎所有使用Qt的情況下,main()函式只需在將控制轉交給Qt庫之前執行初始化,然後Qt庫通過事件向程式告知使用者的行為。
 //所有Qt程式必須有且只有一個main()函式。argc是命令列變數的數量,argv是命令列變數的陣列。
{
 QApplication a(argc, argv); // a是建立的QApplication類的物件,用來處理命令列變數。所有被Qt識別的命令列引數都將從argv中移去,argc也因此減少
// Dialog w;
// w.show();

 Drawer drawer; //建立Drawer類的物件(包含該類標頭檔案)
 drawer.show(); //視窗部件可見

 return a.exec(); //main()函式將控制權交給Qt,Qt完成事件處理工作,當應用程式退出的時候,exec()函式的值就會返回。
 //exec()函式中,Qt接收並處理使用者和系統的事件,並且將他們傳遞給適當的視窗部件。
}

【drawer.cpp】

#include "drawer.h"

#include <QGroupBox>
#include <QVBoxLayout>

Drawer::Drawer(QWidget *parent, Qt::WindowFlags f):QToolBox(parent,f)
{
 setWindowTitle(tr("My-QQ"));

 toolBtn1_1 = new QToolButton; //建立QToolButton類的例項
 toolBtn1_1->setText(tr("趙四小姐")); //設定按鈕的文字
 toolBtn1_1->setIcon(QPixmap("1.png")); //設定按鈕的圖示
 toolBtn1_1->setIconSize(QPixmap("1.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn1_1->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn1_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 toolBtn1_2 = new QToolButton; //建立QToolButton類的例項
 toolBtn1_2->setText(tr("趙四")); //設定按鈕的文字
 toolBtn1_2->setIcon(QPixmap("2.png")); //設定按鈕的圖示
 toolBtn1_2->setIconSize(QPixmap("2.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn1_2->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn1_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 toolBtn1_3 = new QToolButton; //建立QToolButton類的例項
 toolBtn1_3->setText(tr("小姐")); //設定按鈕的文字
 toolBtn1_3->setIcon(QPixmap("3.png")); //設定按鈕的圖示
 toolBtn1_3->setIconSize(QPixmap("3.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn1_3->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn1_3->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 toolBtn1_4 = new QToolButton; //建立QToolButton類的例項
 toolBtn1_4->setText(tr("趙小姐")); //設定按鈕的文字
 toolBtn1_4->setIcon(QPixmap("4.png")); //設定按鈕的圖示
 toolBtn1_4->setIconSize(QPixmap("4.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn1_4->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn1_4->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 toolBtn1_5 = new QToolButton; //建立QToolButton類的例項
 toolBtn1_5->setText(tr("趙姐")); //設定按鈕的文字
 toolBtn1_5->setIcon(QPixmap("5.png")); //設定按鈕的圖示
 toolBtn1_5->setIconSize(QPixmap("5.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn1_5->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn1_5->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 QGroupBox *groupBox1 = new QGroupBox; //抽屜1
 QVBoxLayout *layout1 = new QVBoxLayout(groupBox1);//抽屜內各按鈕的佈局:垂直
 layout1->setMargin(10); //佈局中各窗體的顯示間距
 layout1->setAlignment(Qt::AlignHCenter); //佈局中各窗體的顯示位置:居中對齊

 //將各按鈕加入抽屜1中
 layout1->addWidget(toolBtn1_1);
 layout1->addWidget(toolBtn1_2);
 layout1->addWidget(toolBtn1_3);
 layout1->addWidget(toolBtn1_4);
 layout1->addWidget(toolBtn1_5);

 //按鈕之後插入一個佔位符,使所有按鈕能夠靠上對齊,且整個抽屜大小發生改變時保證按鈕的大小不發生變化
 layout1->addStretch();
 
 toolBtn2_1 = new QToolButton; //建立QToolButton類的例項
 toolBtn2_1->setText(tr("葫蘆娃")); //設定按鈕的文字
 toolBtn2_1->setIcon(QPixmap("6.png")); //設定按鈕的圖示
 toolBtn2_1->setIconSize(QPixmap("6.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn2_1->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn2_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 toolBtn2_2 = new QToolButton; //建立QToolButton類的例項
 toolBtn2_2->setText(tr("爺爺")); //設定按鈕的文字
 toolBtn2_2->setIcon(QPixmap("7.png")); //設定按鈕的圖示
 toolBtn2_2->setIconSize(QPixmap("7.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn2_2->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn2_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 QGroupBox *groupBox2 = new QGroupBox; //抽屜2
 QVBoxLayout *layout2 = new QVBoxLayout(groupBox2);//抽屜內各按鈕的佈局:垂直
 layout2->setMargin(10); //佈局中各窗體的顯示間距
 layout2->setAlignment(Qt::AlignHCenter); //佈局中各窗體的顯示位置:居中對齊

 //將各按鈕加入抽屜2中
 layout2->addWidget(toolBtn2_1);
 layout2->addWidget(toolBtn2_2);
 
 toolBtn3_1 = new QToolButton; //建立QToolButton類的例項
 toolBtn3_1->setText(tr("嘻嘻")); //設定按鈕的文字
 toolBtn3_1->setIcon(QPixmap("8.png")); //設定按鈕的圖示
 toolBtn3_1->setIconSize(QPixmap("8.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn3_1->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn3_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 toolBtn3_2 = new QToolButton; //建立QToolButton類的例項
 toolBtn3_2->setText(tr("哈哈")); //設定按鈕的文字
 toolBtn3_2->setIcon(QPixmap("9.png")); //設定按鈕的圖示
 toolBtn3_2->setIconSize(QPixmap("9.png").size());//設定按鈕的大小與圖示大小一樣
 toolBtn3_2->setAutoRaise(true); //滑鼠離開時,按鈕自動恢復彈起狀態
 toolBtn3_2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//文字和圖示的顯示方式:文字顯示在圖示旁邊

 QGroupBox *groupBox3 = new QGroupBox; //抽屜3
 QVBoxLayout *layout3 = new QVBoxLayout(groupBox3);//抽屜內各按鈕的佈局:垂直
 layout3->setMargin(10); //佈局中各窗體的顯示間距
 layout3->setAlignment(Qt::AlignHCenter); //佈局中各窗體的顯示位置:居中對齊

 //將各按鈕加入抽屜3中
 layout3->addWidget(toolBtn3_1);
 layout3->addWidget(toolBtn3_2);
 
 //將準備好的抽屜插入ToolBox中
 this->addItem((QWidget*)groupBox1,tr("我的好友"));
 this->addItem((QWidget*)groupBox2,tr("陌生人"));
 this->addItem((QWidget*)groupBox3,tr("黑名單"));
}