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.istantanea dell'UI, che richiede un'azione quando faccio clic sul pulsante Intervallo

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();
}
.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top