概述
一,绑定控件的使用
使用的槽函数的使用
#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);
}
最后
以上就是甜美小猫咪为你收集整理的Qt自定义控件(三)的全部内容,希望文章能够帮你解决Qt自定义控件(三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复