工具盒類實現QQ介面QToolBox
阿新 • • 發佈:2021-01-19
目錄
工具盒類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("黑名單")); }