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提示没有那个信号,能帮忙给看看吗