为啥我不能将 QAction SIGNAL 与 QFileDialog SLOT 连接起来?
Posted
技术标签:
【中文标题】为啥我不能将 QAction SIGNAL 与 QFileDialog SLOT 连接起来?【英文标题】:Why I can't connect QAction SIGNAL with QFileDialog SLOT?为什么我不能将 QAction SIGNAL 与 QFileDialog SLOT 连接起来? 【发布时间】:2013-06-17 11:41:50 【问题描述】:我正在尝试为我的文本编辑器编写应用程序菜单,但我不明白为什么信号 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();
mainwindow.h
#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
mainwindow.cpp
#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)"));
【问题讨论】:
【参考方案1】:您没有在类定义中包含Q_OBJECT
宏,因此moc
不会为其生成关联文件。
【讨论】:
以上是关于为啥我不能将 QAction SIGNAL 与 QFileDialog SLOT 连接起来?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的数据不能在带有 SIGNAl/SLOT 的表格之间传输?
如果 QMenu 是 unique_ptr,为啥 QAction 不添加到 QMenu?
PySide:为啥在另一个 QmainWINdow(Main) 中触发 QAction 时 QMainWindow 会烧毁并消失