Crear menus en la barra de menus con QMenu



  • Buenas amigos, una vez mas necesito un poco de ayuda, en concreto lo que quiero es crear nuevos menus desplegables con QMenu y que las nuevas opciones llamen a una funcion con unos parametros pero no consigo encontrar como debe de hacerse en concreto. Lo que estoy haciendo es:

    foreach(QString _menuNew, menusMotores)
        {
            QMenu *newMenu;
            QFile archivoCsv(_menuNew);
            newMenu = menuBar()->addMenu(_menuNew.remove(".csv"));
            archivoCsv.open(QIODevice::ReadOnly | QIODevice::Text);
            if(!archivoCsv.isOpen())
            {
                qDebug() << "El archivo no se ha abierto";
                return;
            }
            QTextStream datosArchivo(&archivoCsv);
            while (!datosArchivo.atEnd())
            {
                QStringList AccesoMotorPws;
                QString motorPws = datosArchivo.readLine();
                AccesoMotorPws = motorPws.split(';');
                qDebug() << "Nombre: " << AccesoMotorPws[0] << " ip: " << AccesoMotorPws[1] << " Puerto: " << AccesoMotorPws[2];
                newMenu->addAction(AccesoMotorPws[0], this, SLOT(setActions(&AccesoMotorPws[1], &AccesoMotorPws[2], &user, &pass, true))); //NO funciona
            }
    
        }
    

    Sospecho que el problema esta dentro del while que es donde se crean las acciones, ahi en la linea de newMenu->addAction(Acc .. no consigo que la funcion setActions con sus parametros se implemente en la opcion del menu, en aplication output me devuelve el mensaje de No such slot MainWindow::setActions(AccesoMotorPws[1], AccesoMotorPws[2], user, pass, true)

    ¿como puedo asignar a cada opcion del menu con un bucle una funcion con parametros distintos?
    Gracias de antemano


  • Moderators

    Hola

    Yo creo que no estás llamando correctamente a addAction(). Repasa la documentación.

    No sé por que llamas a setActions dentro de SLOTS().

    Un saludo


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.