NavigationBarPlugin插件類實現了對左側導航欄的管理,我們可以在導航欄插件中添加界面,并用鼠標點擊導航欄能夠切換對應的界面。
源碼在文章末尾
實現效果如下:
NavigationBarPlugin實現的接口如下:
class NAVIGATIONBAR_EXPORT NavigationBarPlugin
{
public:virtual ~NavigationBarPlugin() {}//設置父窗口和在父窗口上面的布局virtual void SetParent(QWidget* parent, QLayout* layout) = 0; //Incoming parent interface and layout in parent interface//為導航欄添加標題和圖標virtual void addMainMenu(QString title, QIcon icon) = 0;//在對應的導航欄位置添加界面virtual void addMenuWidget(QString widgetTitle, int mainMenuIndex, QWidget* widget) = 0;//獲取導航欄插件界面virtual QWidget* GetWidget() = 0; //Return to the left navigation bar widget//刷新導航欄顯示virtual void hideAndRefresh() = 0; //Refresh navigation bar display
};
使用方法:
1、創建導航欄對象
NavigationBarPlugin.dll可以通過QPlugin插件的形式加載進來成一個QObject指針,再把QObject強轉為NavigationBarPlugin對象,如下:
NavigationBarPlugin* LeftNavigationBarPlugin = qobject_cast<NavigationBarPlugin*>(plugin);
插件的使用可以看之前的文章:《QT從基礎到進階·三十三》QT插件開發QtPlugin
也可以直接new一個NavigationBarPlugin對象。
2、在主界面設置導航欄和布局
ui.centralWidget->layout()->addWidget(LeftNavigationBarPlugin->GetWidget());ui.centralWidget->layout()->addItem(m_centerQVBoxLayout);
我們先把導航欄框架添加添加到主界面的左邊,然后在主界面右邊設置一個布局用于后面顯示界面
3、在導航欄添加標簽按鈕并設置按鈕標簽對應的顯示界面
LeftNavigationBarPlugin->SetParent(ui.centralWidget, m_centerQVBoxLayout);LeftNavigationBarPlugin->addMainMenu("MTFMeasure", QIcon(":/Gen2WGMTFTester/images/MTF/MTF.png"));
if (mtfMeasurePlugin)LeftNavigationBarPlugin->addMenuWidget("MTF", 0, mtfMeasurePlugin->GetWidget());LeftNavigationBarPlugin->addMainMenu("FindFiducial", QIcon(":/Gen2WGMTFTester/images/fiducial/findFiducial.png"));
LeftNavigationBarPlugin->addMenuWidget("FindFiducial", 1, new QLabel("aaaaaaaaaaa"));
LeftNavigationBarPlugin->addMainMenu("EyeBoxScan", QIcon(":/Gen2WGMTFTester/images/fiducial/eyeBoxScan.jpg"));
LeftNavigationBarPlugin->addMenuWidget("EyeBoxScan", 2, new QLabel("bbbbbbbbbb"));
(1)我們先通過SetParent設置導航欄的的父窗口為centralWidget并把垂直布局設置到導航欄中。
(2)通過addMainMenu設置導航欄第一個標簽為“MTFMeasure”,并設置標簽的圖標。
(3)通過addMenuWidget設置第一個界面為"MTF",第二個參數0表示把該界面放在第一個標簽上顯示,第三個參數拿到mtf的界面傳入放置到導航欄的m_centerQVBoxLayout布局中。
(4)同理下面依次添加第二個標簽和放置第二個界面,添加第三個標簽放置第三個界面

源碼下載
