更改QTabWidget中的小部件
我找不到在运行时替换更改QTabWidget中的小部件,qt,Qt,我找不到在运行时替换QTabWidget中特定选项卡的QWidget的方法。我可以使用addTab然后setCurrentWidget,但是如果我只想在选项卡索引1处设置QWidget,而不添加新选项卡,该怎么办?一种方法是使用父QWidget作为选项卡中的主QWidget,并在您想要更改选项卡内容时更改其子项 从技术上讲,您不会更改选项卡本身的QWidget,而只是选项卡中主QWidget的第一个子项 例如: QTabWidget* myTabWidget = new QTabWidget()
QTabWidget
中特定选项卡的QWidget
的方法。我可以使用addTab
然后setCurrentWidget
,但是如果我只想在选项卡索引1处设置QWidget
,而不添加新选项卡,该怎么办?一种方法是使用父QWidget
作为选项卡中的主QWidget
,并在您想要更改选项卡内容时更改其子项
从技术上讲,您不会更改选项卡本身的QWidget
,而只是选项卡中主QWidget
的第一个子项
例如:
QTabWidget* myTabWidget = new QTabWidget();
QWidget* tab1 = new QWidget();
QWidget* tab1Contents = new QWidget( tab1 );
// [1] Setup the first tab.
myTabWidget.addTab( tab1, "1st Tab" );
// [3] If you now want to remove the original contents
// and replace with something new.
delete tab1Contents;
QWidget* tab1NewContents = new QWidget( tab1 );
当然,您可以将布局添加到
tab1
、tab1Contents
和tab1NewContents
中,以确保选项卡内容看起来不错 此实用程序函数执行以下操作:
void replaceTab(QTabWidget*tabs,int索引,
QWidget*替换,常量QString&label=QString()
{
Q_断言(制表符和制表符->计数()>索引)
选项卡->移除选项卡(索引);
if(替换)选项卡->插入选项卡(索引、替换、标签);
}
如果您有多个选项卡,并使用此功能替换当前选项卡中的小部件,则另一个选项卡将成为当前选项卡。这可以通过使用tabs->currentIndex()
获取当前索引,然后使用tabs->setCurrentIndex
进行设置来解决。