国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

這篇具有很好參考價值的文章主要介紹了Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

事件函數(shù)的使用依托于Qt的事件機制,一個來自于外部事件的傳遞機制模型如下所示

Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

信號槽雖然好用,但是無法包含所有的情況,事件函數(shù)可以起到對信號槽無法覆蓋的一些時機進行補充,事件函數(shù)的使用無需連接。

常用的事件函數(shù)如下所示。

//?繪制事件

void QWidget::paintEvent(QPaintEvent?*?event) [virtual?protected]

//?大小改變事件

void QWidget::resizeEvent(QResizeEvent?*?event) [virtual?protected]

//?鼠標按壓事件

void QWidget::mousePressEvent(QMouseEvent?*?event) [virtual?protected]

//?鼠標釋放事件

void QWidget::mouseReleaseEvent(QMouseEvent?*?event) [virtual?protected]

//?鼠標雙擊事件

void QWidget::mouseDoubleClickEvent(QMouseEvent?*?event) [virtual?protected]

//?鼠標移動事件

void QWidget::mouseMoveEvent(QMouseEvent?*?event) [virtual?protected]

//?移動事件

void QWidget::moveEvent(QMoveEvent?*?event) [virtual?protected]

//?按鍵按壓事件

void QWidget::keyPressEvent(QKeyEvent?*?event) [virtual?protected]

//?按鍵釋放事件

void QWidget::keyReleaseEvent(QKeyEvent?*?event) [virtual?protected]

//?獲取焦點事件

void QWidget::focusInEvent(QFocusEvent?*?event) [virtual?protected]

//?失去焦點事件

void QWidget::focusOutEvent(QFocusEvent?*?event) [virtual?protected]

//?關閉事件

void QWidget::closeEvent(QCloseEvent?*?event) [virtual?protected]

//?進入事件

void QWidget::enterEvent(QEvent?*?event) [virtual?protected]

//?離開事件

void QWidget::leaveEvent(QEvent?*?event) [virtual?protected]

QPaintDevice類表示可繪制設備,其派生類均可以被QPainter類繪制。

示例代碼:

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include<QDebug>
#include<QPixmap>//圖片類
#include<QPainter>//畫家類
#include<QKeyEvent>//鍵盤事件參數(shù)
namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
protected:
    //聲明事件函數(shù) 虛函數(shù)
    void paintEvent(QPaintEvent *event);
    void keyPressEvent(QKeyEvent *event);

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}
//定義事件函數(shù)
void Dialog::paintEvent(QPaintEvent * event)
{
    //輸出窗口寬高
    qDebug()<<this->width()<<this->height();
    //創(chuàng)建畫家類對象
    QPainter painter(this);
    QPixmap pic(":/new/prefix1/ikun.jpg");
    //繪制圖片函數(shù)
    //void	drawPixmap(int x, int y, int width, int height, const QPixmap & pixmap)
    //參數(shù):橫坐標 縱坐標 寬度 高度  圖片內容
    //設置隨主窗口大小改變而變化
    painter.drawPixmap(0,0,this->width(),this->height(),pic);

}
//所有的事件函數(shù)的參數(shù)都包含了當前類型事件的參數(shù)信息
void Dialog::keyPressEvent(QKeyEvent *event)
{
    if(event->key()==Qt::Key_A)
    {
        //獲得當前進度條的值
        int value=ui->progressBar->value();
        //減少進度條的值
        ui->progressBar->setValue(--value);
    }else if(event->key()==Qt::Key_D)
    {
        //獲得當前進度條的值
        int value=ui->progressBar->value();
        //增加進度條的值
        ui->progressBar->setValue(++value);
    }
}

練習:鍵盤WASD控制飛機移動

使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

如果小飛機觸碰到窗口邊緣,彈出Q事件函數(shù)--實例:使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include<QDebug>
#include<QPixmap>
#include<QPainter>
#include<QKeyEvent>
#include<QMessageBox>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
protected:
    void paintEvent(QPaintEvent *event);
    void keyPressEvent(QKeyEvent *event);
private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    QSize size(ui->labelImg->width(),ui->labelImg->height());
    QPixmap pic(":/new/prefix1/plane.png");
    pic = pic.scaled(size,Qt::KeepAspectRatioByExpanding);
    ui->labelImg->setPixmap(pic);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    QPixmap pic(":/new/prefix1/star.png");
    painter.drawPixmap(0,0,width(),height(),pic);

}

void Dialog::keyPressEvent(QKeyEvent *event)
{
    //獲取飛機當前位置
    int x=ui->labelImg->x();
    int y=ui->labelImg->y();
    qDebug()<<ui->labelImg->x()<<ui->labelImg->y();//160 120
     if(event->key()==Qt::Key_W)   //向上移動
     {
        ui->labelImg->move(x,y-5);

     }else if(event->key()==Qt::Key_A)  //向下移動
     {

         ui->labelImg->move(x-5,y);

     }else if(event->key()==Qt::Key_S)  //向左移動
     {

         ui->labelImg->move(x,y+5);

     }else if(event->key()==Qt::Key_D)  //向右移動
     {

         ui->labelImg->move(x+5,y);
     }
     if((x<=0||x>=width()-30)||(y<=0||y>=height()-30))//飛機墜毀邊距
     {
         QMessageBox::critical(this,"失敗","飛機已墜毀");
         ui->labelImg->move(200,150);//墜毀重生位置
     }
}

dialog.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <widget class="QLabel" name="labelImg">
   <property name="geometry">
    <rect>
     <x>160</x>
     <y>120</y>
     <width>30</width>
     <height>30</height>
    </rect>
   </property>
   <property name="text">
    <string/>
   </property>
   <property name="pixmap">
    <pixmap resource="res.qrc">:/new/prefix1/plane.png</pixmap>
   </property>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources>
  <include location="res.qrc"/>
 </resources>
 <connections/>
</ui>

實現(xiàn)效果

Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。

?Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。文章來源地址http://www.zghlxwxcb.cn/news/detail-500407.html

到了這里,關于Qt使用星空圖作為窗口背景,點擊鍵盤的WASD控制小飛機在上面移動。的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Qt】Qt無邊框窗口(鼠標點擊自定義標題欄)可拖動

    【Qt】Qt無邊框窗口(鼠標點擊自定義標題欄)可拖動

    隱藏掉標題欄后,默認情況下窗口無法被鼠標拖動的,需要自己處理鼠標事件,移動窗口達到拖動效果,但是又不想要鼠標點擊整個窗口都可以拖動,只需要鼠標點擊自定義的標題欄時可拖動 具體步驟如下: 類外初始化 通過鼠標點擊事件,判斷鼠標是否在標題欄,如果是,

    2024年02月12日
    瀏覽(22)
  • Qt窗口設置無邊框不能移動,鼠標穿透后不能響應點擊事件

    Qt窗口設置無邊框不能移動,鼠標穿透后不能響應點擊事件

    ??最近在做一個迷你小工具,準備干點不可描述的事情,想要短小強悍,始終在最頂層顯示,同時不要自帶的關閉按鈕和邊框,百度一下,發(fā)現(xiàn)是需要設置如下兩個屬性: ??那么問題來了,這樣的話一運行窗體就在正中間,而且無法拖動,就像這樣 ??哪怕對于我這種

    2024年02月10日
    瀏覽(27)
  • Qt系列——點擊按鈕關閉窗口的三種實現(xiàn)方式,附源碼

    Qt系列——點擊按鈕關閉窗口的三種實現(xiàn)方式,附源碼

    主要實現(xiàn)了點擊QPushButton按鈕,關閉窗口的功能。 簡單設計界面如下,按鈕名稱如圖中右側紅框中內容 源程序連接

    2024年02月11日
    瀏覽(55)
  • 小程序使用圖像作為背景

    微信小程序不支持通過background-image設置背景,因此必須使用image標簽來設置背景 在 uni-app 中,可以使用 background-image 屬性來將一張圖像作為另一張圖像的背景。 以下是一個示例代碼,演示如何使用 background-image 將一張圖像作為另一張圖像的背景: 在上面的示例中,我們在頁

    2024年02月13日
    瀏覽(20)
  • 前端使用視頻作為背景圖的方法

    前端使用視頻作為背景圖的方法

    通過 video + source 引入視頻,并對視頻播放屬性進行設置,再通過 css 使視頻覆蓋背景即可。 ??覺得有幫助的朋友可以支持下作者哦,您的鼓勵是我創(chuàng)作的最大動力,如有開發(fā)問題可聯(lián)系作者

    2024年02月04日
    瀏覽(19)
  • 前端代碼分享——星空背景特效(內含源碼)

    前端代碼分享——星空背景特效(內含源碼)

    打開網(wǎng)頁效果最好哦 提供的JavaScript代碼是一個名為\\\"WarpDrive\\\"的jQuery插件,它創(chuàng)建了一個星空動畫,類似于科幻媒體(如《星際迷航》)中所看到的\\\"超光速\\\"效果。 提供的JavaScript代碼是一個名為\\\"WarpDrive\\\"的jQuery插件,它創(chuàng)建了一個星空動畫,類似于科幻媒體(如《星際迷航》)

    2024年02月14日
    瀏覽(19)
  • HTML5 Canvas與JavaScript攜手繪制動態(tài)星空背景

    HTML5 Canvas與JavaScript攜手繪制動態(tài)星空背景

    目錄 一、程序代碼 二、代碼原理 三、運行效果 這段代碼通過 HTML5 的 canvas 元素和 JavaScript 實現(xiàn)了一個星空背景效果。首先,它在頁面加載時創(chuàng)建了一個全屏大小的畫布,并使用 JavaScript 生成了多個具有不同運動軌道的星星對象。每顆星星都具有隨機的半徑、位置、運動速度

    2024年02月20日
    瀏覽(23)
  • 使用python向窗口發(fā)送鼠標點擊命令

    今天遇到一個問題。公司讓用電腦在網(wǎng)頁上看個視頻。網(wǎng)頁有個判斷:一段時間沒有鼠標活動,視頻就會暫停。于是就想,能否隔一段時間就模擬鼠標點擊一下視頻暫停,再點一下繼續(xù)播放。省得它自己停止播放。這樣我就可以讓網(wǎng)頁窗口在后臺,我去干別的。 研究了一下,

    2024年02月12日
    瀏覽(22)
  • 如何使用Qt創(chuàng)建一個新窗口?

    如何使用Qt創(chuàng)建一個新窗口? 在Qt中,我們可以使用QML語言輕松創(chuàng)建圖形界面。如果需要創(chuàng)建一個新的窗口,我們可以使用Qt.createComponent來創(chuàng)建一個新組件并將其添加到主窗口中。下面是一個簡單的例子。 在這個例子中,我們創(chuàng)建了一個主窗口,并在其中添加了一個按鈕。當

    2024年02月11日
    瀏覽(19)
  • C++,使用Qt設計一個登錄窗口

    C++,使用Qt設計一個登錄窗口

    要求如下: 1、給窗體改變名稱并設置窗口圖標、尺寸固定 2、中間放log圖 3、用戶名和密碼使用圖片完成 4、賬戶用明文模式,密碼用密文模式 5、點擊登錄后,將界面上的用戶名和“admin”比較,密碼和“123456”比較,如果匹配成功,則輸出登錄成功,如果匹配失敗,則輸出

    2024年02月12日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包