Qt 学习之路 2(18):事件--代码实现

亦凉 2023-07-01 12:55 130阅读 0赞

Qt 学习之路 2(18):事件

在看这个文章的时候完善了作者的代码: #ifndef EVENTLABEL_H #define EVENTLABEL_H #include #include class QMouseEvent; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); }; class EventLabel : public QLabel { public: EventLabel(QWidget *parent = 0); ~EventLabel(); protected: void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); }; #endif // EVENTLABEL_H #include “eventlabel.h” #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { } MainWindow::~MainWindow() { } void EventLabel::mouseMoveEvent(QMouseEvent *event) { this->setText(QString(“

Move: (%1, %2)

“) .arg(QString::number(event->x()), QString::number(event->y()))); } void EventLabel::mousePressEvent(QMouseEvent *event) { this->setText(QString(“

Press: (%1, %2)

“) .arg(QString::number(event->x()), QString::number(event->y()))); } void EventLabel::mouseReleaseEvent(QMouseEvent *event) { QString msg; msg.sprintf(“

Release: (%d, %d)

“, event->x(), event->y()); this->setText(msg); } EventLabel::EventLabel(QWidget *parent) : QLabel(parent) { } EventLabel::~EventLabel() { } #include “eventlabel.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.resize(400,300); w.setWindowTitle(“MouseEvent Demo”); EventLabel label(&w); //label.setMouseTracking(true); label.resize(300, 200); w.show(); return a.exec(); }

Center

发表评论

表情:
评论列表 (有 0 条评论,130人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Qt 学习事件总结

    Qt 的事件是整个 Qt 框架的核心机制之一,也比较复杂。说它复杂,更多是因为它涉及到的函数众多,而处理方法也很多,有时候让人难以选择。现在我们简单总结一下 Qt 中的事件机制

    相关 Qt学习(19): 事件(event)

    前面说了几个标准对话框,下面不打算继续说明一些组件的使用,因为这些使用很难讲完,很多东西都是与实际应用相关的。实际应用的复杂性决定了我们根本不可能把所有组件的所有使用方法都说明