Qt 마우스 및 버튼 응답 이벤트 프레젠테이션 1개

1706 단어
ui에 두 개의 컨트롤을 추가합니다. 각각 lable과pushButton입니다.
mainwindow에서.h에 두 가지 이벤트 추가: mouseMoveEvent 및 keyPressEvent
구현된 기능은 키보드 z 키를 누르면 그림 한 장을 표시합니다
pushbutton을 누르면 좌표를 표시하고 커서를 아이콘으로 사용자 정의합니다
코드는 다음과 같습니다.
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtWidgets/QMainWindow>
#include "ui_mainwindow.h"
#include <QMouseEvent>

class MainWindow : public QMainWindow
{
	Q_OBJECT

public:
	MainWindow(QWidget *parent = 0);
	~MainWindow();

public:
	void mouseMoveEvent(QMouseEvent *);
	void keyPressEvent(QKeyEvent *);

private:
	Ui::MainWindowClass ui;
};

#endif // MAINWINDOW_H

//mianwindow.cpp
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	ui.label->setText(tr("push the key: z"));
	ui.pushButton->setText(tr("try to press the mouse and to move "));
}

MainWindow::~MainWindow()
{

}

void MainWindow::mouseMoveEvent(QMouseEvent *e)
{
	QCursor my(QPixmap("C:/Users/sony/Desktop/practice/1/Win32/Debug/bubble.png"));
	QApplication::setOverrideCursor(my);
	int x = e->pos().x();
	int y = e->pos().y();

	ui.pushButton->setText(tr("mouse:(%1,%2)").arg(x).arg(y));
    ui.pushButton->move(e->pos());
}

void MainWindow::keyPressEvent(QKeyEvent *e)
{
	if(e->key() == Qt::Key_Z)
	{
		ui.label->setPixmap(QPixmap("C:/Users/sony/Desktop/pic/Lena.jpg"));
		ui.label->resize(100, 100);
	}
}

//main.cpp
#include "mainwindow.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	MainWindow w;
	w.show();
	return a.exec();
}

좋은 웹페이지 즐겨찾기