我无法在运行时找到替换QWidget
中特定标签的QTabWidget
的方法。我可以使用addTab
然后使用setCurrentWidget
,但是如果我只想在标签索引1处设置QWidget
而不添加新标签呢?
答案 0 :(得分:4)
一种方法是在选项卡中使用父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
添加布局,确保标签内容看起来不错!
答案 1 :(得分:1)
此实用程序功能:
void replaceTab(QTabWidget * tabs, int index,
QWidget * replacement, const QString & label = QString())
{
Q_ASSERT(tabs && tabs->count() > index)
tabs->removeTab(index);
if (replacement) tabs->insertTab(index, replacement, label);
}