mainwindo。h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
//#include "ui_mainwindow.h"
#include <QDialog>
#include <QWidget>
#include <QTranslator>
#include "draw.h"
#include "menu.h"
#include <iostream>
using namespace std;
class QPushButton;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
// void butTon(QWidget *);
void paintEvent(QPaintEvent *);
protected:
Menu* w;
protected slots:
// 父窗口用于接收子窗口信号的slot。
void Button_clicked()
{
cout << "hello mainwindows" <<endl;
//子窗口的按钮被点击了。
}
};
#endif // MAINWINDOW_H//项目横向横坐标
mainwindow。cpp
#include "mainwindow.h"
//#include "ui_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)
{
setFixedSize(800,480);
w = new Menu();
connect(w,SIGNAL(ChildWindowEvent()),this,SLOT(Button_clicked()));
}
MainWindow::~MainWindow()
{
}
void MainWindow::paintEvent(QPaintEvent *)
{
// 画一条直线
QPainter painter(this); // 创建QPainter一个对象
QPen pen;
//画横长线
painter.drawLine(30,30,590,30);
//画竖长线
painter.drawLine(590,30,590,550);
//画竖短线-横向
}
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 *);
signals:
void ChildWindowEvent();
private:
QPushButton *btn;
public slots:
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 *)
{
cout << "hel" << endl;
//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 << "hello butt" << endl;
// 触发子窗口的信号给父窗口接收。
emit ChildWindowEvent();
}
我想在menu。cpp里面单击按钮,发送信号ChildWindowEvent给mainwindow窗口然后调用函数打印一句话,但是mainwindow窗口不响应,请问问题出在哪啊