Повторюсь. На форме есть WorkSpace, в контекстом меню главного окна есть меню которое управляет дочерними окнами (каскадом, разложить и т.д.) в него по добавляется список окон как и в ComboBox на ToolBar панели. Задача в том что бы переключать активные окна и с помощью меню и ComboBox тоже. Вообщем сам вроде как разобрался. Создал функцию создания меню "Окна" как основную и функцию updateWindows которая исполняет все остальное. Функция срабатывает при закрытии или открытии дочернего окна. Проблема в том что компилятор ругается на функцию которую я назначаю в слот для созданного нового пункта меню "окна": Object::connect: No such slot MainWindow::wActivateWindow(id) in mainwindow.cpp:267 Object::connect: (receiver name: 'MainWindow')
Что не так делаю ? Где затупил ?
Код | //------функция обновления меню ОКНА------- void MainWindow::wMenuUpdate() { ui->menuWindow->clear();
QAction *Cascade=new QAction(this); Cascade->setText("Cascade"); ui->menuWindow->addAction(Cascade); connect(Cascade, SIGNAL(triggered()), this, SLOT(wCascade()));
QAction *Tile=new QAction(this); Tile->setText("Tile"); ui->menuWindow->addAction(Tile); connect(Tile, SIGNAL(triggered()), this, SLOT(wTile()));
ui->menuWindow->addSeparator();
QAction *CloseActive=new QAction(this); CloseActive->setText("Close active"); ui->menuWindow->addAction(CloseActive); connect(CloseActive, SIGNAL(triggered()), this, SLOT(wCloseActive()));
QAction *CloseAll=new QAction(this); CloseAll->setText("Close all"); ui->menuWindow->addAction(CloseAll); connect(CloseAll, SIGNAL(triggered()), this, SLOT(wCloseAll()));
ui->menuWindow->addSeparator();
QAction *Next=new QAction(this); Next->setText("Next"); ui->menuWindow->addAction(Next); connect(Next, SIGNAL(triggered()), this, SLOT(wNext()));
QAction *Previous=new QAction(this); Previous->setText("Previous"); ui->menuWindow->addAction(Previous); connect(Previous, SIGNAL(triggered()), this, SLOT(wPrevious()));
}
|
Код | //--------функция выбора окна автивным void MainWindow::wActivateWindow(int wIndex) { QWidget *wWidget = windowsList->at(wIndex); wWidget->show(); wWidget->setFocus(); }
|
Код | //-----основная функция выполняющая другие функции--- void MainWindow::updateWindows() { wMenuUpdate();
windowsList=new QWidgetList; *windowsList=WorkSpace->windowList();
if (windowsList->size()>0){ wComboList->setEnabled(true); wComboList->clear();
ui->menuWindow->addSeparator();
for(int i=0; i<windowsList->size();++i){ wComboList->addItem("window");
QAction *wMenuAction=new QAction(this); wMenuAction->setText("window"); ui->menuWindow->addAction(wMenuAction); //-----тут выдает ошибку int id=i; connect(wMenuAction,SIGNAL(triggered()),this,SLOT(wActivateWindow(id)));
} } else { wComboList->setEnabled(false); wComboList->clear(); wComboList->addItem("[нет открытых окон]"); }
}
|
|