Приложение должно иметь для каждого документа свое окно, причем определенные параметры документа определяются из базы данных по идентификатору, т.е. нужен параметр. В каждом окне должно быть меню с существующими документами(меню "Окно") для навигации по ним.
Сделала так:
MainWindow::MainWindow(int id)
{
//конструктор
}
void MainWindow::createMenus()
{
...
windowMenu = menuBar()->addMenu(tr("Окно"));
updateWindowMenu();
connect(windowMenu, SIGNAL(aboutToShow()), this, SLOT(updateWindowMenu()));
}
void MainWindow::updateWindowMenu()
{
windowMenu->clear();
numberOfSchemes = db->getSchemesNumber(); //количество идентификаторов в бд
for (int i = 0; i < numberOfSchemes; ++i)
{
QString text;
text = db->getSchemeName(i); // название документа в бд
action[i] = windowMenu->addAction(text);
action[i]->setCheckable(true);
if (text == title)
{
action[i]->setDisabled(true);
}
connect(action[i], SIGNAL(triggered()), this, SLOT( openWindow() ));
}
}
void MainWindow::openWindow()
{
for (int i = 0; i < numberOfSchemes; i++)
{
if (QObject::sender() == action[i])
{
window[i] = new MainWindow(i);
window[i]->setVisible(true);
window[i]->move(x() + 40, y() + 40);
}
}
}
но при этом каждый раз при выборе в меню "Окно" нужного документа он открывается в новом окне, а надо сделать так, чтобы окно выдвигалось на передний план, если оно уже существует. Посоветуйте, пожалуйста, как это сделать.