void MainWindow::addChild(const QString &imageFileName) { if (!imageFileName.isEmpty()) { QString canonicalImageFileName = QFileInfo(imageFileName).canonicalFilePath(); for (int i = 0; i < tabWidget->count(); ++i) { ChildWidget *child = qobject_cast<ChildWidget *> (tabWidget->widget(i)); if (canonicalImageFileName == child->canonicalImageFileName()) { tabWidget->setCurrentIndex(i); return; } } ChildWidget *child = new ChildWidget; if (child->loadImage(imageFileName)) { statusBar()->showMessage(tr("File loaded"), 2000); tabWidget->setCurrentIndex(tabWidget->addTab(child, child->userFriendlyCurrentFile())); connect(child, SIGNAL(boxChanged()), this, SLOT(updateCommandActions())); connect(child, SIGNAL(modifiedChanged()), this, SLOT(updateTabTitle())); connect(child, SIGNAL(modifiedChanged()), this, SLOT(updateSaveAction())); } else { child->close(); } } }