Qt用户界面设计:鼠标移动事件与函数定义

需积分: 28 84 下载量 96 浏览量 更新于2024-08-18 收藏 13.68MB PPT 举报
"Qt用户界面设计涉及函数定义、鼠标移动事件处理以及Qt框架的学习和应用。" 在Qt用户界面设计中,我们经常会遇到需要自定义事件处理的情况。例如,【标题】提到的"然后在下面进行两个函数的定义",其中一个函数是`mouseMoveEvent`,这是Qt中用于处理鼠标移动事件的函数。在【描述】中给出了`mouseMoveEvent`的具体实现,它接收一个`QMouseEvent *m`参数,该参数包含了关于鼠标事件的信息。 ```cpp void MainWindow::mouseMoveEvent(QMouseEvent *m) { QCursor my(QPixmap("E:/Qt/Qt-Creator-Example/event/time.png")); QApplication::setOverrideCursor(my); int x = m->pos().x(); int y = m->pos().y(); ui->pushButton->setText(tr("鼠标现在的坐标是(%1,%2),哈哈好玩吧").arg(x).arg(y)); ui->pushButton->move(m->pos()); } ``` 这段代码首先定义了一个新的鼠标指针样式,使用`QPixmap`加载图片,并通过`QApplication::setOverrideCursor`设置为当前鼠标指针。接着,获取鼠标位置坐标`x`和`y`,并将这些坐标显示在按钮上,同时让按钮跟随鼠标的移动。 【标签】"QT UI 入门"表明这是一个关于Qt界面开发的基础内容。Qt是一个强大的跨平台框架,适用于开发图形用户界面(GUI)应用程序。它的优点包括免费、丰富的功能、跨平台支持和多语言支持。Qt包含了大量的类和函数,简化了C++ GUI编程。 学习Qt,首先需要了解其基本概念,如图形用户界面的构成,以及Qt在构建桌面环境和应用程序界面中的作用。【部分内容】提到了几个学习资源,如Qt参考文档、Qt中文论坛和相关书籍。初学者可以通过阅读Qt自带的教程、示例代码和参考书籍来逐步掌握Qt编程。 QtCreator是Nokia推出的一款集成开发环境,专为Qt应用程序开发设计。它提供了项目生成向导、代码编辑器、文件和类管理工具,以及与QtDesigner和qmake的集成,极大地简化了开发过程。无论是在Linux、MacOS还是Windows平台上,QtCreator都能提供一致的开发体验。 Qt是一个强大的工具,用于创建美观且功能丰富的跨平台应用程序。通过理解并实践像`mouseMoveEvent`这样的事件处理函数,以及充分利用QtCreator等开发工具,开发者可以快速高效地构建自己的Qt应用。

#include "mylogin.h" mylogin::mylogin(QWidget *parent) : QDialog(parent) { this->init_ui(); connect(this->bnt_login, &QPushButton::clicked, this, &mylogin::do_login); connect(this->bnt_register, &QPushButton::clicked , this ,&mylogin::do_enroll); } mylogin::~mylogin() { } void mylogin::init_ui() { this->setFixedSize(QSize(600,350)); this->setWindowTitle(tr("岑超升")); this->setWindowIcon(QIcon(":/src/1.png")); this->lb1 = new QLabel(); this->lb2 = new QLabel(); this->lb3 = new QLabel(); this->lb1->setFixedSize(QSize(560,200)); QPixmap pic; pic.load(":/src/2.png"); //this->lb1->setPixmap(pic.scaled(this->lb1->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); this->lb1->setPixmap(QPixmap(":/src/2.png")); this->lb2->setText(tr("用户名:")); this->lb3->setText(tr("密 码:")); this->usr_name_le = new QLineEdit(); //这两个参数后面传入信号中去,然后emit发射出去 this->usr_pass_le = new QLineEdit(); this->usr_pass_le->setEchoMode(QLineEdit::Password); this->bnt_login = new QPushButton(tr("登 陆")); this->bnt_register = new QPushButton(tr("注 册")); this->hb1 = new QHBoxLayout(); this->hb2 = new QHBoxLayout(); this->hb3 = new QHBoxLayout(); this->hb1->addWidget(this->lb2); this->hb1->addWidget(this->usr_name_le); this->hb2->addWidget(this->lb3); this->hb2->addWidget(this->usr_pass_le); this->hb3->addWidget(this->bnt_login); this->hb3->addWidget(this->bnt_register); this->vb1 = new QVBoxLayout(); this->vb1->addWidget(this->lb1); this->vb1->addLayout(this->hb1); this->vb1->addLayout(this->hb2); this->vb1->addLayout(this->hb3); this->setLayout(this->vb1); } void mylogin::do_login() { emit sig_login(usr_name_le->text(), usr_pass_le->text()); //需要把这里输入的账号密码信息发送到myapp那去,用到的函数是emit //需要自定义一个信号,sig_login //这个槽函数能够发出信号 } void mylogin::do_enroll() { emit sig_enroll(); }用C++语言解释并注释每行代码的语法

2023-06-09 上传