Come usare il sottomenu di Qaction in Qt
-
21-12-2019 - |
Domanda
Voglio implementare semplici comandi come un QDebug () quando clicco su un sottomenu nel MainWindow.Mi riferivo al programma di esempio dato con il Qt 5 IDE (...\Qt\Qt5.2.0\5.2.0\msvc2010\examples\widgets\mainwindows\menus
) e l'utilizzo, sono riuscito a costruire il codice.Non ricevo alcun tempo di compilazione o errori di tempo di esecuzione.
Ho creato MainWindow.ui usando la modalità di progettazione.Ha un oggetto della classe Qaction denominata ActionInterval.
Ma quando clicco su di esso, non succede nulla, non sono in grado di implementare il comando in intervallo void ().Immagino di non connettermi correttamente.Cosa mi manca qui?Si prega di avvisare.
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
void createActions();
private slots:
void interval();
};
#endif // MAINWINDOW_H
.
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
createActions();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::createActions()
{
ui->actionInterval = new QAction(tr("&Interval"), this);
ui->actionInterval->setStatusTip(tr("Set the interval for capturing delta & reference images"));
connect(ui->actionInterval, SIGNAL(triggered()), this, SLOT(interval()));
}
void MainWindow::interval()
{
qDebug()<<"inside interval qdialog";
}
.
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
. Soluzione
void MainWindow::createActions()
{
ui->actionInterval->setStatusTip(tr("Set the interval for capturing delta & reference images"));
connect(ui->actionInterval, SIGNAL(triggered()), this, SLOT(interval()));
}
.
Non è necessario necessarie la linea ui->actionInterval = new QAction(tr("&Interval"), this);
, il ui->setupUi()
gestisce che per te, quindi provocando potenzialmente un riferimento errato, quindi quando fai clic su di esso non si spara correttamente.