一,绑定控件的使用
使用的槽函数的使用
#include "signalwegit.h"
#include "ui_signalwegit.h"
SignalWegit::SignalWegit(QWidget *parent) :
QWidget(parent),
ui(new Ui::SignalWegit)
{
ui->setupUi(this);
//数字改变滑动
connect(ui->spinBox, SIGNAL(valueChanged(int)),
ui->slider, SLOT(setValue(int)));
//滑动改变数字
connect(ui->slider, SIGNAL(valueChanged(int)),
ui->spinBox, SLOT(setValue(int)));
}
SignalWegit::~SignalWegit()
{
delete ui;
}
二,事件的处理机制
QEvent 中
#ifndef MYBUTTON_H
#define MYBUTTON_H
#include <QPushButton>
class MyButton : public QPushButton
{
Q_OBJECT
public:
explicit MyButton(QWidget *parent = 0);
bool event(QEvent *event);
signals:
public slots:
};
#endif // MYBUTTON_H
cpp
#include "mybutton.h"
#include <QEvent>
#include <QMouseEvent>
#include <QDebug>
#include <QWidget>
//要继承QPushButton类
MyButton::MyButton(QWidget *parent) : QPushButton(parent)
{
}
bool MyButton::event(QEvent *event)
{
//mouse 的event事件的处理
if (event->type() ==QEvent::MouseButtonPress)
{
QMouseEvent * mouseev = static_cast<QMouseEvent*>(event);
//判断是那个键
if (mouseev->button() == Qt::LeftButton)
{
return true;
}
//mid中 键
if (mouseev->button() == Qt::MidButton)
{
qDebug() << "mid Button";
}
//right中 键
if (mouseev->button() == Qt::RightButton)
{
qDebug() << "right Button";
}
}
//父类处理
return QPushButton::event(event);
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
bool eventFilter(QObject *watched, QEvent *event);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QEvent>
#include <QMouseEvent>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->myBtn->installEventFilter(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
//判断产生事件的窗口是不是mybutton
if (watched == ui->myBtn)
{
if (event->type() == QEvent::MouseButtonPress)
{
QMouseEvent* mouseEv = static_cast<QMouseEvent*>(event);
if (mouseEv->button() == Qt::RightButton)
{
QMessageBox::information(this, "info", "songlI");
return true;
}
}
}
return QMainWindow::eventFilter(watched, event);
}