加拉Q_OBJECT 构造函数未定义

C++语言 码拜 8年前 (2016-04-20) 1162次浏览
加拉Q_OBJECT 构造函数未定义
报错内容
不加Q_OBJECT 程序能跑 但是 connect好像不能执行
加拉之后  构造函数那里报错拉
代码
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QDialog>
#include<QMainWindow>
#include <QTabWidget>
#include <QMenuBar>
 #include <iostream>
#include<QFileDialog>
#include<QString>
using namespace std ;
class MainWindow:  public QMainWindow
{
    Q_OBJECT
public:
   MainWindow(QWidget *parent=0);
public:
    QMenu * m_menufile;
    QAction *m_open;
    QAction *m_save;
public:
    void CreateActions();
public slots:
    void RspActOpen();
    void  RspActSave();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
 MainWindow::MainWindow(QWidget *parent):QMainWindow(parent)
{
    CreateActions();
    m_menufile= menuBar()->addMenu("flie");
m_menufile->addAction(m_open);
m_menufile->addAction(m_save);
}
void MainWindow::CreateActions()
{
    m_open = new QAction("open",this);
    connect(m_open,SIGNAL(triggered()),this,SLOT(RspActOpen()));
    m_save = new QAction("save",this);
    connect(m_save,SIGNAL(triggered()),this,SLOT(RspActSave()));
}
void MainWindow::RspActOpen()
{
    QFileDialog *fileDialog = new QFileDialog(this);
    fileDialog->setGeometry(10,30,300,200);
    fileDialog->show();
}
void MainWindow::RspActSave()
{
    cout<<"OK"<<endl;
}
解决方案

40

这个错误常见于刚刚创建一系列有继承关系的class的时候,这个时候很容易忘了给base class的virtual function加上函数实现。
解决办法:给基类的virtual函数加上本来就应该有的function body。当含有虚函数的类未将析构函数声明为virtual时也会出现这个链接错误。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明加拉Q_OBJECT 构造函数未定义
喜欢 (0)
[1034331897@qq.com]
分享 (0)