Qt 如何将滚动条添加到父QWidget

Qt 如何将滚动条添加到父QWidget,qt,qtabwidget,qscrollarea,Qt,Qtabwidget,Qscrollarea,我了解如何将滚动区域添加到特定的小部件中。然而,在我的例子中,Qwidget有多个子部件,这些都是使用QVBoxLayout设置的。在这种情况下,如何添加滚动条?这里QWidget不是中心小部件,它是TabWidget的一个页面。我的代码如下所示: QTabWIdget *center = new QTabWidget; setCentralWIdget(center); xTab = new QWidget; formLayout = new QFormLayout; formLayout

我了解如何将滚动区域添加到特定的小部件中。然而,在我的例子中,Qwidget有多个子部件,这些都是使用QVBoxLayout设置的。在这种情况下,如何添加滚动条?这里QWidget不是中心小部件,它是TabWidget的一个页面。我的代码如下所示:

QTabWIdget *center = new QTabWidget; setCentralWIdget(center);

xTab = new QWidget;

formLayout = new QFormLayout; formLayout->addWidget(...); formLayout->addWidget(...); formLayout->addWidget(...); formLayout->addWidget(...);

xTab->setLayout(formLayout);
现在如何将滚动条设置为xTab?我试着用

scrollArea = new QScrollArea;
scrollArea->setWidget(xTab);
然而,这是行不通的


任何想法/建议都很有帮助,非常感谢。

您是否尝试过使用
QScrollArea
作为选项卡页

QTabWIdget *center = new QTabWidget; setCentralWIdget(center);

xTab = new QScrollArea; 
formLayout = new QFormLayout; formLay....
xTab->setLayout(formLayout);
center->addTab(xTab, "XXX Tab");

我成功地使用了以下工具:

scroll=new QScrollArea(mainWindow->centralWidget);
scroll->setGeometry(mainWindow->tabWidget->geometry());
scroll->setWidget(mainWindow->tabWidget);
scroll->show();

QScrollArea定义了可滚动小部件的显示位置。如果父窗口为0,则它是非模式窗口。setGeometry将QScrollArea实例设置为所需的尺寸(选项卡的尺寸)。setWidget定义QScrollara将实际滚动的小部件

应该滚动什么?整个选项卡小部件还是单个选项卡的内容?您是否尝试过在Qt Designer中创建UI?我只希望选项卡小部件的内容可以滚动。我没有在我的应用程序中使用Qt designer,但是我尝试了一个带有Qt designer的示例程序,其中添加了一个垂直滚动条。结果是它添加了滚动条,但没有滚动内容。我也尝试过这种方法。但是在这种情况下,它需要调整小部件的大小。在这个选项卡中,我有一个textBrowser,它没有启用滚动条来滚动内容,而是像lineEdit一样调整textBrowser的大小,并且所有小部件都在可用空间中进行调整。我专门设置了xTab->SetWidgetResizeable(false)-即使默认情况下是这样。即使这样也无济于事。另外,我想知道这种方式和setWidget(xTab)在功能上是不一样的。默认情况下,大多数小部件的大小策略都设置为QSizePolicy::Preferred,这意味着小部件可以扩展,但这样做没有好处。您可能希望对子窗口小部件设置最小大小限制,以确保其可用性