Question

Je veux mettre en œuvre des commandes simples comme un qDebug() lorsque je clique sur un sous-menu dans la mainwindow.Je faisais référence exemple de programme donné avec le Qt 5 IDE (...\Qt\Qt5.2.0\5.2.0\msvc2010\examples\widgets\mainwindows\menus), et en l'utilisant, j'ai réussi à construire le code.Je ne reçois pas le temps de compilation ou de l'exécution des erreurs.

J'ai créé le mainwindow.interface utilisateur en utilisant le mode de conception.Il a un objet de la classe QAction appelé actionInterval. snapshot of UI, which requires action when I click on Interval button

Mais quand je clique dessus, rien ne se passe, je ne suis pas en mesure de mettre en œuvre la commande dans le vide de l'intervalle().Je suppose que je ne suis pas de la connexion.Ce qui me manque ici?Veuillez informer.

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();
}
Était-ce utile?

La solution

void MainWindow::createActions()
{
    ui->actionInterval->setStatusTip(tr("Set the interval for capturing delta & reference images"));
    connect(ui->actionInterval, SIGNAL(triggered()), this, SLOT(interval()));
}

Vous ne devriez pas besoin de cela ui->actionInterval = new QAction(tr("&Interval"), this); ligne, la ui->setupUi() poignées pour vous, alors il est peut-être entraîner une référence incorrecte ainsi, lorsque vous cliquez sur, c'est ne pas tirer correctement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top