如何在Qt Designer中自动将小部件拉伸到父小部件的大小

时间:2016-02-04 08:07:16

标签: c++ qt layout qt5 qt-creator

我需要向TabWidget添加MainWindow控件,并将TableWidget放在其拥有的每个标签中。问题是我需要让它们自动延伸到父窗口小部件的大小(TabWidget到窗口大小,TableWidgetTabWidget的大小。

通过Qt Designer实现它的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

您应该使用Qt布局。

在设计师中,您必须选择要让其子项正确布局的小部件,然后选择表单 - &gt; 垂直/水平布局/...快捷方式: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);
}

enter image description here