首页 > 代码库 > Qt——添加动作

Qt——添加动作

教程:https://www.devbean.net/2012/08/qt-study-road-2-action/

运行教程中的第一个程序,报错如下:

技术分享

原因:没有将main.cpp改为教程中的代码。见http://www.xuebuyuan.com/2029333.html

然后根据教程,代码如下:

//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    void open();

    QAction *openAction;
};

#endif // MAINWINDOW_H

 

//mainwindow.cpp
#include <QAction>
#include <QMenuBar>
#include <QMessageBox>
#include <QStatusBar>
#include <QToolBar>

#include "mainwindow.h"

//说明MainWindow构造函数前需要调用QMainWindow的含参构造函数
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    setWindowTitle(tr("Main Window"));

    //openAction构造函数,传入一个图标、一个文本和this指针
    openAction = new QAction(QIcon(":/images/doc-open"), tr("&Open..."), this);
    //定义QAction的快捷键
    openAction->setShortcuts(QKeySequence::Open);
    //鼠标置于图标上 出现提示
    openAction->setStatusTip(tr("Open an existing file"));
    connect(openAction, &QAction::triggered, this, &MainWindow::open);

    //向菜单栏添加File菜单项  并将QAction对象添加到这个菜单
    QMenu *file = menuBar()->addMenu(tr("&File"));
    file->addAction(openAction);

    //增加一个File工具栏  把QAction对象添加到这个工具栏
    QToolBar *toolBar = addToolBar(tr("&File"));
    toolBar->addAction(openAction);

    //状态栏 位于底部
    statusBar() ;
}

MainWindow::~MainWindow()
{
}

void MainWindow::open()
{
    QMessageBox::information(this, tr("Information"), tr("Open"));
}

 

//main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QPushButton>
#include <QDebug>
#include <QHBoxLayout>

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

    //QCoreApplication app(argc, argv);
    QApplication app(argc,argv);
    MainWindow w;
    w.show();

    return app.exec();
}

 

添加图片资源,可以参照教程。

如下图,应该是没有问题的。

技术分享

但是,运行后无法加载。

技术分享

 

Qt——添加动作