【发布时间】:2014-03-05 12:15:22
【问题描述】:
这是 GUI 的快照。我只想通过单击QMenu 对象帮助来执行简单的操作。这个QMenu 对象没有任何子菜单。
您能否告诉我在仅单击QMenu 时如何执行操作
这是我尝试过的,但我得到了一个空输出。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QSignalMapper>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
void createActions();
QSignalMapper *pSignalMapper;
private slots:
void help();
};
#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()
{
pSignalMapper = new QSignalMapper(this);
connect(ui->menuHelp, SIGNAL(triggered(QAction*)), this, SLOT(help()));
}
void MainWindow::help()
{
qDebug()<<"inside help qdialog";
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <ui_mainwindow.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
点击帮助QMenu时的输出,完全没有:
Starting E:\Qt2\modules\guiPrototype2\build-guiPrototype2-Desktop_Qt_5_2_0_MSVC2010_32bit-Debug\debug\guiPrototype2.exe...
【问题讨论】:
-
好吧,我猜你的connect()没有成功,你能检查一下connect的返回值吗?如果它是假的,那么连接没有工作。另外,我认为 `aboutThoShow()´ 更适合 qt-project.org/doc/qt-5.0/qtwidgets/qmenu.html#aboutToShow
标签: qt signals-slots qmenu qaction