亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Qt實現(xiàn)可拖動自定義控件

 更新時間:2023年04月07日 13:59:45   作者:熊來闖一闖  
這篇文章主要為大家詳細介紹了如何基于Qt實現(xiàn)可拖動自定義控件,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解一下

使用QT實現(xiàn)自定義類卡牌控件Card,使其能在父類窗口上使用鼠標(biāo)進行拖動。

控件類頭文件card.h

#ifndef CARD_H
#define CARD_H

#include <QWidget>
#include <QPaintEvent>
#include <QPainter>
#include <QMouseEvent>

class Card:public QWidget
{
    Q_OBJECT
public:
    explicit Card(QWidget *parent = nullptr);
    ~Card();
protected:
    void paintEvent(QPaintEvent *event) override;
    void mousePressEvent(QMouseEvent *event) override;
signals:
    void sendSelf(Card *w);
};

#endif // CARD_H

控件類頭文件card.cpp

#include "card.h"

Card::Card(QWidget *parent):QWidget(parent)
{
    this->setGeometry(0,0,200,400);       //設(shè)置控件窗口大小
}

Card::~Card()
{

}

void Card::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);                               //創(chuàng)建畫筆
    painter.setRenderHint(QPainter::Antialiasing,true);
    QBrush brush;                                         //創(chuàng)建筆刷
    brush.setColor(Qt::yellow);                           //設(shè)置筆刷顏色
    brush.setStyle(Qt::SolidPattern);                     
    painter.setBrush(brush);                              //設(shè)置畫筆筆刷
    painter.drawRoundedRect(QRectF(5,5,190,390),10,10);   //繪制圓角矩形并填充
}

void Card::mousePressEvent(QMouseEvent *event)
{
    Q_UNUSED(event);
    emit sendSelf(this);                                  //信號發(fā)送該控件地址
}

以上是基于widget類的控件類;

父窗口頭文件mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "card.h"
#include <QDebug>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;
    Card* cd[8];
    Card *temp;
    QPoint startP;
    QPoint yuanP;

private slots:
    void getObject(Card *w);

protected:
    void mouseMoveEvent(QMouseEvent *event) override;
    void mouseReleaseEvent(QMouseEvent *event) override;
};

#endif // MAINWINDOW_H

父窗口頭文件mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    for(int i=0;i<8;i++)
    {
        cd[i] = new Card(this);
        connect(cd[i],&Card::sendSelf,this,&MainWindow::getObject);
        cd[i]->move(i%4*200,i/4*400+20);
    }
}

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

//獲取控件坐標(biāo)
void MainWindow::getObject(Card *w)
{
    temp = w;
    startP = cursor().pos()-this->pos();
    yuanP = temp->pos();
    /*將此小部件提升到父小部件堆棧的頂部*/
    temp->raise();
}

//移動事件
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    temp->move(yuanP.x()+event->x()-startP.x(),yuanP.y()+event->y()-startP.y());
}

//拖拽對象置頂,卡牌積壓的時候,拖動的那張卡牌置頂
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
    temp->raise();
}

以下是工程源碼:

鏈接:https://pan.baidu.com/s/1o1OXI-GYCf6FcHd1Bt5ycg

提取碼:ve9v

到此這篇關(guān)于基于Qt實現(xiàn)可拖動自定義控件的文章就介紹到這了,更多相關(guān)Qt可拖動自定義控件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中虛函數(shù)與純虛函數(shù)的用法

    C++中虛函數(shù)與純虛函數(shù)的用法

    這篇文章主要介紹了C++中虛函數(shù)與純虛函數(shù)的用法,是非常重要的概念,需要的朋友可以參考下
    2014-08-08
  • C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實例代碼

    C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實例代碼

    這篇文章主要介紹了C++中用new創(chuàng)建二維數(shù)組和指針數(shù)組實例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-03-03
  • windows下用c++獲取本機ip地址的三種方法

    windows下用c++獲取本機ip地址的三種方法

    工作過程中遇到一個需求,需要獲取本機ip地址,同時獲取本機網(wǎng)絡(luò)連接情況,即網(wǎng)線是否連接,經(jīng)過多番搜索,本文給大家介紹了3種方案,通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • C語言實現(xiàn)簡易通訊錄功能

    C語言實現(xiàn)簡易通訊錄功能

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易通訊錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C語言編程數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)詳解小白篇

    C語言編程數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)詳解小白篇

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),非常適合初學(xué)數(shù)據(jù)結(jié)構(gòu)的小白,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進步,早日升職加薪
    2021-09-09
  • C++內(nèi)存管理詳解使用方式

    C++內(nèi)存管理詳解使用方式

    內(nèi)存管理是C++最令人切齒痛恨的問題,也是C++最有爭議的問題,C++高手從中獲得了更好的性能更大的自由,C++菜鳥的收獲則是一遍—遍的檢查代碼和對C++的痛恨,但內(nèi)存管理在C++中無處不在,內(nèi)存泄漏幾乎在每個C++程序中都會發(fā)生,要想成為C++高手,內(nèi)存管理這關(guān)是必須過的
    2022-04-04
  • C 語言指針變量的運算詳解

    C 語言指針變量的運算詳解

    本文主要介紹 C語言指針變量運算的知識,這里整理了詳細的知識點,并附示例代碼,有需要學(xué)習(xí)C語言指針的朋友可以參考下
    2016-08-08
  • 圖的鄰接表存儲表示示例講解

    圖的鄰接表存儲表示示例講解

    這篇文章主要介紹了圖的鄰接表存儲表示,大家參考使用
    2013-11-11
  • dword ptr指令詳細解析

    dword ptr指令詳細解析

    8086CPU的指令,可以處理兩種尺寸的數(shù)據(jù),byte和word。所以在機器指令中要指明,指令進行的是字操作還是字節(jié)操作
    2013-09-09
  • 剖析C++編程中friend關(guān)鍵字所修飾的友元函數(shù)和友元類

    剖析C++編程中friend關(guān)鍵字所修飾的友元函數(shù)和友元類

    這篇文章主要介紹了剖析C++編程中friend關(guān)鍵字所修飾的友元函數(shù)和友元類,友元了以后在外部就可以訪問到正常情況下無法訪問到的私有屬性和方法,需要的朋友可以參考下
    2016-01-01

最新評論