日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大三软件工程小项目-小技术集合-客户端界面重画

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大三软件工程小项目-小技术集合-客户端界面重画 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

客戶端源碼:

http://download.csdn.net/detail/qq78442761/9768668


服務端源碼:

http://download.csdn.net/detail/qq78442761/9768662



我們在游戲登錄的時候,可以看見各種各樣炫酷的登錄界面。


其中一種最簡單的就是,ui設計師設計好的圖,然后把他弄成程序背景,再把標題欄和邊框去掉。再重新寫鼠標鍵盤事件。

就可以做一個簡單又比較好看的登錄界面了,

如下圖所示:





這個效果的做法,是這樣做的

這個登錄界面是在login.h和login.cpp控制的

我們在login.cpp里的構造函數如下

Login::Login(QWidget *parent) :QWidget(parent),ui(new Ui::Login) {ui->setupUi(this);//取消標題欄的顯示setWindowFlags(Qt::FramelessWindowHint);//背景透明setAttribute(Qt::WA_TranslucentBackground);m_backGroundImage=new QPixmap();m_backGroundImage->load(":/image/login.png");ui->UserlineEdit->setAlignment(Qt::AlignHCenter);ui->FBlineEdit->setAlignment(Qt::AlignCenter);m_dragging=false;connect(ui->RunGametoolButton,SIGNAL(clicked(bool)),this,SLOT(RunGame())); }
我們可見下面就是關鍵步驟

ui->setupUi(this);//取消標題欄的顯示setWindowFlags(Qt::FramelessWindowHint);//背景透明setAttribute(Qt::WA_TranslucentBackground);m_backGroundImage=new QPixmap();m_backGroundImage->load(":/image/login.png");


還有,因為操作系統要不同的畫窗口,這樣才能看見那個窗口

代碼如下:

void Login::paintEvent(QPaintEvent *event) {QPainter painter(this);QRect frameRect = rect();painter.drawPixmap(frameRect, *m_backGroundImage); } 其中painEvent是如下:


virtual void paintEvent(QPaintEvent *event);


那么該如何拖動窗口呢?

Qt對我們提供了方便的鼠標事件。

我們現在來看login.h

#ifndef LOGIN_H #define LOGIN_H#include <QWidget> #include <QPixmap> #include <QPainter> #include <QRect> #include <QLabel> #include <QMouseEvent> #include <QPoint> #include <QMessageBox> #include "widget.h"namespace Ui { class Login; }class Login : public QWidget {Q_OBJECTpublic:explicit Login(QWidget *parent = 0);~Login();virtual void mouseMoveEvent ( QMouseEvent * event );virtual void mousePressEvent ( QMouseEvent * event );virtual void mouseReleaseEvent ( QMouseEvent * event ); public slots:void RunGame(); //運行游戲private:Ui::Login *ui;virtual void paintEvent(QPaintEvent *event);QPixmap *m_backGroundImage;bool m_dragging; //判斷是否拖動QPoint m_startPosition; //拖動開始前的鼠標位置QPoint m_framePosition; //窗體的原始位置Widget *gameWidget; //副本界面};#endif // LOGIN_H
其中下面的代碼就是關鍵

virtual void mouseMoveEvent ( QMouseEvent * event );virtual void mousePressEvent ( QMouseEvent * event );virtual void mouseReleaseEvent ( QMouseEvent * event );

我們在login.cpp里面看看他的相關代碼:

void Login::mousePressEvent(QMouseEvent *event) {// 只響應左鍵if (event->button() == Qt::LeftButton){m_dragging = true;m_startPosition = event->globalPos();m_framePosition = frameGeometry().topLeft();}}void Login::mouseMoveEvent(QMouseEvent *event) {// 只響應左鍵if (event->buttons() == Qt::LeftButton){if(m_dragging){// delta 相對偏移量,QPoint delta = event->globalPos() - m_startPosition;// 新位置:窗體原始位置 + 偏移量move(m_framePosition + delta);}}}void Login::mouseReleaseEvent ( QMouseEvent * event ) {// 結束draggingm_dragging = false; }

總結

以上是生活随笔為你收集整理的大三软件工程小项目-小技术集合-客户端界面重画的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。