mainwindow。h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
//#include "ui_mainwindow.h"
#include <QDialog>
#include <QWidget>
#include <QTranslator>
#include "picture.h"
#include "draw.h"
class QPushButton;class MainWindow : public QMainWindow
{
    Q_OBJECT
public:   
 MainWindow(QWidget *parent = 0);
    ~MainWindow(); 
   void butTon(QWidget *);  
  void paintEvent(QPaintEvent *);
 
 
private slots:    
void Button_clicked();
private:   
 PictureChange *w;
};
#endif // MAINWINDOW_H//项目横向横坐标
 
mainwindow。cpp
 #include "mainwindow.h"
#include <QPainter>
#include <iostream>
#include <QMessageBox>
#include <QApplication>
#include <QPixmap>
#include "picture.h"
#include <QtGui>
int LanNub = 78;
 
using namespace std;
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent)
{
    butTon(0);   
 setFixedSize(800,480);
}
 
 
MainWindow::~MainWindow(){}
 
 
 
 
/*
void MainWindow::butTon(QWidget *){    cout << "hel ew" << endl;*    QWidget *w = new QWidget(this);    Button = new QPushButton("change picture",this);   Button->setGeometry(QRect(QPoint(630, 30),QSize(100, 30)));   / QVBoxLayout *layout = new QVBoxLayout;// 这行有layout管理button大小    layout->addWidget(Button);    w->setLayout(layout);    setCentralWidget(w);    w->show();/    //setLayout(layout);    connect(Button,SIGNAL(clicked()),this,SLOT(Button_clicked()));/    }
*/
void MainWindow::paintEvent(QPaintEvent *)
{     
   // 画一条直线        
QPainter painter(this); 
// 创建QPainter一个对象        
QPen pen;  
      //画横长线       
 painter.drawLine(30,30,590,30);
        //画竖长线        painter.drawLine(590,30,590,550);  
      //画竖短线-横向}
void MainWindow::butTon(QWidget *)
{    
cout << "hello but" << endl; 
  //w = new PictureChange(this);
   connect(this,SIGNAL(ChildWindowEvent()),this,SLOT(Button_clicked()));  
 cout << "sdfsdf" <<endl;}
 
void MainWindow::Button_clicked()
{   
 cout << "hello butt" << endl;   
}
 
 
 
 
menu.h
#ifndef MENU_H
#define MENU_H
#include <QMainWindow>
class QPushButton;
class Menu : public QMainWindow
{
    Q_OBJECT
public:   
 Menu(QWidget *parent = 0);
   void butTon(QWidget *);
private:    QPushButton *btn;
//private slots:  //  void btn_clicked();
signals:
    // 这个信号是发给父窗口的。    
void ChildWindowEvent();
 
protected slots:
    // 点击子窗口中按钮的slot    
void btn_clicked();
};
#endif // MENU_H
 
menu.cpp
#include "menu.h"
#include <iostream>
//#include <QMessageBox>
#include <QApplication>//#include <QPixmap>
#include "picture.h"
#include <QtGui>
class QPushbutton;
using namespace std;
Menu::Menu(QWidget *parent) :QMainWindow(parent)
{   
 butTon(0);    
setFixedSize(300,200); 
  // connect(pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()))
}
void Menu::butTon(QWidget *)
{
    //QWidget *w = new QWidget(this);  
  btn = new QPushButton("change picture",this);
   //btn->setGeometry(QRect(QPoint(630, 30),QSize(100, 30)));
   btn->setGeometry(QRect(QPoint(100, 50),QSize(130, 30)));
   /* QVBoxLayout *layout = new QVBoxLayout;// 这行有layout管理button大小    layout->addWidget(btn);    w->setLayout(layout);    setCentralWidget(w);    w->show();*/
    //setLayout(layout);    
connect(btn,SIGNAL(clicked()),this,SLOT(btn_clicked()));
}
void Menu::btn_clicked()
{
    cout << "send" << endl;  
     //触发子窗口的信号给父窗口接收。    
emit ChildWindowEvent();
}
 
 我在menu.h里面定义了一个自定义信号和槽,但是mainwindow。cpp提示没有那个信号,能帮忙给看看吗