QT에서 qaction 하위 메뉴를 사용하는 방법
-
21-12-2019 - |
문제
MAINWINDOW의 하위 메뉴를 클릭하면 QDEBUG ()와 같은 간단한 명령을 구현하려고합니다.Qt 5 IDE (...\Qt\Qt5.2.0\5.2.0\msvc2010\examples\widgets\mainwindows\menus
)와 함께 주어진 샘플 프로그램을 참조하고 사용하여 코드를 구성 할 수있었습니다.나는 컴파일 시간이나 런타임 오류를받지 못한다.
디자인 모드를 사용하여 mainwindow.ui를 만들었습니다.QactionInterval이라는 qaction 클래스의 객체가 있습니다.
그러나 내가 그것을 클릭하면 아무 일도 일어나지 않습니다. 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()
는 사용자를 위해 핸들을 처리 할 필요가 없으므로 잠재적으로 잘못된 참조가 발생합니다.이를 클릭하면 올바르게 발사되지 않습니다.
제휴하지 않습니다 StackOverflow