簡體   English   中英

為什么我無法將QAction SIGNAL與QFileDialog SLOT連接?

[英]Why I can't connect QAction SIGNAL with QFileDialog SLOT?

我正在嘗試為我的文本編輯器編寫應用程序的菜單,但是我不明白為什么信號triggered無法正常工作。 它應該打開QFileDialog::getOpenFileName ,但是不會發生。 為什么?

main.cpp

#include "mainwindow.h"
#include "centralwidget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow      *mainWindow     = new MainWindow;
    CentralWidget   *centralWidget  = new CentralWidget;

    mainWindow->setCentralWidget(centralWidget);
    mainWindow->show();

    return a.exec();
}

主窗口

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QStatusBar>
#include <QAction>
#include <QFileDialog>
#include <QString>

class MainWindow : public QMainWindow
{
public:
    MainWindow();

public slots:
    void slotFileDialog();
};

#endif // MAINWINDOW_H

主窗口

#include "mainwindow.h"

MainWindow::MainWindow()
{   
    QMenu *fileMenu = new QMenu("File");
    QAction *openAction = new QAction(tr("&Open..."), this);
    connect(openAction, SIGNAL(triggered()),
                            this, SLOT(slotFileDialog()));
    fileMenu->addAction(openAction);

    QMenuBar *mainMenu = new QMenuBar;
    mainMenu->addMenu(fileMenu);
    mainMenu->show();

    QStatusBar *mainStatusBar = new QStatusBar;

    setMenuBar(mainMenu);
    setStatusBar(mainStatusBar);
}

void MainWindow::slotFileDialog()
{
    QString fileName = QFileDialog::getOpenFileName(
                this, tr("Open File"),"/home",tr("Text (*.txt)"));
}

您沒有在類定義中包含Q_OBJECT宏,因此moc將不會為其生成關聯的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM