我需要向TabWidget
添加MainWindow
控件,并将TableWidget
放在其拥有的每个标签中。问题是我需要让它们自动延伸到父窗口小部件的大小(TabWidget
到窗口大小,TableWidget
到TabWidget
的大小。
通过Qt Designer实现它的最简单方法是什么?
答案 0 :(得分:2)
您应该使用Qt布局。
在设计师中,您必须选择要让其子项正确布局的小部件,然后选择表单 - > 垂直/水平布局/...快捷方式:FragmentManager manager = getFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
int countFragments = manager.getBackStackEntryCount();
for( int i = 0; i< countFragments; i++ ) {
BackStackEntry entry = manager.getBackStackEntryAt(i);
if( entry != null ) {
if( entry.getName() != null ) {
Fragment f = (Fragment) manager.findFragmentByTag(manager.getBackStackEntryAt(i).getName());
if( f instanceof MyFisrtFragmentClass ){
//do something
}else if( f instanceof MySecondFragmentClass){
//do something
}
}
}}
}
ft.commit();
}
答案 1 :(得分:1)
下面是一个示例程序,可根据需要创建视图。逻辑是Mainwindow-&gt;中央小工具 - &gt;添加垂直布局 - &gt;添加标签窗口小部件
- &gt;添加标签1-&gt;添加V框布局 - &gt;添加表1(5 X 5)
- &gt;添加标签2-&gt;添加V Box布局 - &gt;添加表1(5 X 5)
代码评论将详细解释。
void MainWindow::fnInit()
{
//Layout to the MainWindow
QVBoxLayout *vLayoutMain;
QTabWidget *Tab;
QWidget *Widget1;
//Layout to the Tab1
QVBoxLayout *vLayoutTab1;
QTableWidget *Table1;
QWidget *Widget2;
//Layout to the Tab2
QVBoxLayout *vLayoutTab2;
QTableWidget *Table2;
//Set Vertical Box Layout to the main Window (central widget)
vLayoutMain = new QVBoxLayout(this->centralWidget());
Tab = new QTabWidget(this->centralWidget());
Widget1 = new QWidget();
//Set the Vertical Box Layout to the Widget 1 (holds the tab1)
vLayoutTab1 = new QVBoxLayout(Widget1);
Table1 = new QTableWidget(5,5,Widget1);
vLayoutTab1->addWidget(Table1);
Tab->addTab(Widget1, QString("Tab 1"));
Widget2 = new QWidget();
//Set the Vertical Box Layout to the Widget 2 (holds the tab2)
vLayoutTab2 = new QVBoxLayout(Widget2);
Table2 = new QTableWidget(5,5,Widget2);
vLayoutTab2->addWidget(Table2);
Tab->addTab(Widget2, QString("Tab 2"));
//Adding the Tab widget to the main layout
vLayoutMain->addWidget(Tab);
Tab->setCurrentIndex(0);
}