qt使用tab管理多個介面

2021-12-29 20:38:58 字數 2878 閱讀 6035

要求實現多個頁面之間的切換打算採用tab頁來管理多個頁面,並隱藏tab頭main.cpp#include mytab.h

#include

int main(int argc, char *ar**)

mytab.h#ifndef mytab_h

#define mytab_h

#include

#include

#include ui_mytab.h

#include pagemain.h

#include pageend.h

#include pageset.h

#include mydefine.h

#include

#include

class mytab : public qmainwindow

;#endif // mytab_h

mytab.cpp#include mytab.h

#include

#include

#include

#include

#include

mytab::mytab(qwidget *parent)

: qmainwindow(parent), m_pagemain(parent),m_pageset(parent),m_pageend(parent)

mytab::~mytab()

void mytab::init()

qtabwidget::tab-bar

qtabbar::tab

qtabbar::tab:hover

qtabbar::tab:selected);

//隱藏qtabwidget,否則主視窗被覆蓋

//m_tabwidget.hide();

//隱藏tab

m_tabwidget.tabbar()->hide();

//設定tab可關閉

m_tabwidget.settabsclosable(true);

//新增tab

int nindex = -1;

nindex = m_tabwidget.addtab(&m_pagemain,tr(pagemain));

if (nindex != -1)

m_mappageindex.insert(mappageindex::value_type(e_main_page, nindex));

//m_mappageindex[e_main_page] = nindex;

nindex = m_tabwidget.addtab(&m_pageset,tr(pageset));

if (nindex != -1)

m_mappageindex.insert(mappageindex::value_type(e_set_page, nindex));

//m_mappageindex[e_set_page] = nindex;

nindex = m_tabwidget.addtab(&m_pageend,tr(pageend));

if (nindex != -1)

m_mappageindex.insert(mappageindex::value_type(e_end_page, nindex));

//m_mappageindex[e_end_page] = nindex;

//顯示qtabwidget

m_tabwidget.show();

qrect rtclient = this->geometry();

m_tabwidget.setgeometry(rtclient);

m_pagemain.setgeometry(rtclient);

pagechange(e_main_page);

}void mytab::resizeevent(qresizeevent * event)

void mytab::resize()

void mytab::pagechange(e_tab_page page)

}e_tab_page mytab::pagetype()

return page;

}pagemain.h#ifndef pagemain_h

#define pagemain_h

#include

#include ui_pagemain.h

#include mydefine.h

class pagemain : public qwidget

;#endif // pagemain_h

pagemain.cpp#include pagemain.h

#include mytab.h

#include

pagemain::pagemain(qwidget *parent)

: qwidget(parent)

pagemain::~pagemain()

void pagemain::on_endbutton_clicked()

void pagemain::on_setbutton_clicked()

void pagemain::on_typebutton_clicked()

}void pagemain::init(qwidget *pparent)

mydefine.h#ifndef my_define_h

#define my_define_h

typedef enum etabpages

e_tab_page;

#endifpageset和pageend與pagemain較為相似 不進行上傳1.tab中的widget必須要有父類(否則可能會出現問題)

2.專案牽涉到由型別找tab索引和tab索引查詢型別 故使用了boost的bimap來實現雙向查詢

qt使用tab管理多個介面

要求實現多個頁面之間的切換打算採用tab頁來管理多個頁面,並隱藏tab頭main.cpp include mytab.h int main int argc,char argv mytab.h ifndef mytab h define mytab h include include include...

Qt多個ui介面的使用例項

首先新增ui檔案,右鍵專案名 新增新檔案 qt qt designer form 在新加的ui檔案中新增自己需要的控制項 編譯一下專案,在工程檔案下回生成乙個ui xx.h格式的標頭檔案 給新建的ui檔案新增類,右鍵專案名 新增新檔案 c c class,類的內容大體如下 ifndef test h...

Qt多個ui介面,如何建立聯絡

一 最簡單的方法 無非就是你建了多個ui介面,然後你只需要new它,獲得它的位址資訊,就可以建立聯絡了,如下 在mainwindow.c新增,然後mainwindow.c就可以跟test1和test2建立聯絡了 testone new test1 testtwo new test2 testtwo ...