Creación de un botón en el toolbar con tres lineas en el contructor:
QAction *action1 = new QAction("Abrir", this);
ui->mainToolBar->addAction(action1);
connect(action1, &QAction::triggered, this, &MainWindow::openFile);
1) QAction *action1 = new QAction("Abrir", this);
Se crea una nueva acción con el nombre "Abrir" y se asigna a la variable action1. El this
pasado como segundo parámetro es un puntero al objeto que está creando
la acción. En este caso, se asume que es la ventana principal (MainWindow) de la aplicación.
2) ui->mainToolBar->addAction(action1);
Se agrega la acción action1 a la barra de herramientas principal (mainToolBar) de la ventana principal (ui).
3) connect(action1, &QAction::triggered, this, &MainWindow::openFile);
Se conecta la señal triggered de la acción action1 con la ranura openFile() en la ventana principal (MainWindow). Cuando se activa la acción, se llamará a la función openFile() en la ventana principal.
Observar que la funcion MainWindow::openfile() se conecta como &MainWindow::openFile. Esto se debe a que connect recibe como parámetro la dirección de la memoria de la función.
Nota: Para acceder a los metodos del qaction fuera del constructor, hay que declararlo en la clase, fuera del constructor.
en mainwindow.h:
QAction *action1;
en el constructor:
action1 = new QAction("Abrir", this);
y en cualquier funcion se utliza:
action1->setEnabled(false);Nota 2: Se puede declarar en el constructor, pero al QAction hay que darle un nombre con setObjectName() y hay que buscarlo con ui->mainToolBar->findChild<QAction*>(<nombre>).
No hay comentarios:
Publicar un comentario