C++ 如何使小部件自动延伸到父小部件';Qt设计器中的s大小

C++ 如何使小部件自动延伸到父小部件';Qt设计器中的s大小,c++,qt,layout,qt5,qt-creator,C++,Qt,Layout,Qt5,Qt Creator,我需要将TabWidget控件添加到main窗口,并将TableWidget放置在它拥有的每个选项卡中。问题是我需要让它们自动拉伸到父窗口小部件的大小(TabWidget到窗口的大小,TabWidget到TabWidget的大小) 通过Qt Designer实现它的最简单方法是什么?您应该使用Qt布局 在designer中,您必须选择希望其子部件正确布局的小部件,然后选择表单->垂直/水平布局/…快捷方式:Ctrl+1…6您应该使用Qt布局 在designer中,您必须选择希望其子部件正确布局的

我需要将
TabWidget
控件添加到
main窗口
,并将
TableWidget
放置在它拥有的每个选项卡中。问题是我需要让它们自动拉伸到父窗口小部件的大小(
TabWidget
到窗口的大小,
TabWidget
TabWidget
的大小)


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

您应该使用Qt布局


在designer中,您必须选择希望其子部件正确布局的小部件,然后选择表单->垂直/水平布局/…快捷方式:
Ctrl+1…6
您应该使用Qt布局


在designer中,您必须选择希望其子部件正确布局的小部件,然后选择表单->垂直/水平布局/…快捷方式:
Ctrl+1…6

下面是一个示例程序,可根据需要创建视图。逻辑是主窗口->中心小部件->添加垂直布局->添加选项卡小部件
->添加选项卡1->添加V形框布局->添加表1(5 X 5)
->添加选项卡2->添加V形盒布局->添加表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);
}

下面是一个示例程序,可根据需要创建视图。逻辑是主窗口->中心小部件->添加垂直布局->添加选项卡小部件
->添加选项卡1->添加V形框布局->添加表1(5 X 5)
->添加选项卡2->添加V形盒布局->添加表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);
}

您需要使用布局。您需要使用布局。