문제

MAINWINDOW의 하위 메뉴를 클릭하면 QDEBUG ()와 같은 간단한 명령을 구현하려고합니다.Qt 5 IDE (...\Qt\Qt5.2.0\5.2.0\msvc2010\examples\widgets\mainwindows\menus)와 함께 주어진 샘플 프로그램을 참조하고 사용하여 코드를 구성 할 수있었습니다.나는 컴파일 시간이나 런타임 오류를받지 못한다.

디자인 모드를 사용하여 mainwindow.ui를 만들었습니다.QactionInterval이라는 qaction 클래스의 객체가 있습니다.간격 버튼을 클릭 할 때 조치가 필요한 UI의 스냅 샷

그러나 내가 그것을 클릭하면 아무 일도 일어나지 않습니다. void 간격 ()에서 명령을 구현할 수 없습니다.나는 내가 제대로 연결하지 않을 것 같아.여기 내가 뭘 잃어 버렸어?제발 조언 해주세요.

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

도움이 되었습니까?

해결책

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

ui->actionInterval = new QAction(tr("&Interval"), this); 행, ui->setupUi()는 사용자를 위해 핸들을 처리 할 필요가 없으므로 잠재적으로 잘못된 참조가 발생합니다.이를 클릭하면 올바르게 발사되지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top