void SettingsDialog::ensureCategoryWidget(Category *category) { if (category->tabWidget != 0) return; foreach (const IOptionsPageProvider *provider, category->providers) { category->pages += provider->pages(); } qStableSort(category->pages.begin(), category->pages.end(), optionsPageLessThan); QTabWidget *tabWidget = new QTabWidget; for (int j = 0; j < category->pages.size(); ++j) { IOptionsPage *page = category->pages.at(j); QWidget *widget = page->createPage(0); tabWidget->addTab(widget, page->displayName()); } connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(currentTabChanged(int))); category->tabWidget = tabWidget; category->index = m_stackedLayout->addWidget(tabWidget); }