最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

控件類頭文件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實(shí)現(xiàn)可拖動自定義控件的文章就介紹到這了,更多相關(guān)Qt可拖動自定義控件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言中互斥鎖與自旋鎖及原子操作使用淺析

    C語言中互斥鎖與自旋鎖及原子操作使用淺析

    今天不整GO語言,我們來分享一下以前寫的C語言代碼,來看看互斥鎖、自旋鎖和原子操作的demo,示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值
    2023-01-01
  • QT5實(shí)現(xiàn)簡單的TCP通信的實(shí)現(xiàn)

    QT5實(shí)現(xiàn)簡單的TCP通信的實(shí)現(xiàn)

    本文主要介紹了QT5實(shí)現(xiàn)簡單的TCP通信的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C++基于灰度圖上色GrayToColorFromOther的實(shí)現(xiàn)

    C++基于灰度圖上色GrayToColorFromOther的實(shí)現(xiàn)

    本文主要介紹了C++基于灰度圖上色GrayToColorFromOther的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 詳解C語言中動態(tài)內(nèi)存管理及柔性數(shù)組的使用

    詳解C語言中動態(tài)內(nèi)存管理及柔性數(shù)組的使用

    這篇文章主要為大家詳細(xì)介紹一下C語言中動態(tài)內(nèi)存管理以及柔性數(shù)組的使用方法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定的幫助,需要的可以參考一下
    2022-07-07
  • C語言實(shí)現(xiàn)單詞小助手改進(jìn)版

    C語言實(shí)現(xiàn)單詞小助手改進(jìn)版

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)單詞小助手的改進(jìn)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++運(yùn)算符重載圖文詳解

    C++運(yùn)算符重載圖文詳解

    運(yùn)算符重載的方法是定義一個重載運(yùn)算符的函數(shù),在需要執(zhí)行被重載的運(yùn)算符時,系統(tǒng)就自動調(diào)用該函數(shù),以實(shí)現(xiàn)相應(yīng)的運(yùn)算。也就是說,運(yùn)算符重載是通過定義函數(shù)實(shí)現(xiàn)的
    2021-09-09
  • C++鍵盤記錄程序代碼

    C++鍵盤記錄程序代碼

    這篇文章主要介紹了C++鍵盤記錄程序代碼,是Windows應(yīng)用程序開發(fā)中非常實(shí)用的功能,該功能也常被一些遠(yuǎn)程操控程序所實(shí)用,需要的朋友可以參考下
    2014-10-10
  • C++進(jìn)一步認(rèn)識類與對象

    C++進(jìn)一步認(rèn)識類與對象

    類是創(chuàng)建對象的模板,一個類可以創(chuàng)建多個對象,每個對象都是類類型的一個變量;創(chuàng)建對象的過程也叫類的實(shí)例化。每個對象都是類的一個具體實(shí)例(Instance),擁有類的成員變量和成員函數(shù)
    2021-10-10
  • 基于QT和百度云api實(shí)現(xiàn)批量獲取PDF局部文字內(nèi)容

    基于QT和百度云api實(shí)現(xiàn)批量獲取PDF局部文字內(nèi)容

    這篇文章將為大家介紹如何使用 QT 構(gòu)建圖形用戶界面,結(jié)合百度云 OCR API 實(shí)現(xiàn)批量獲取 PDF 局部文字內(nèi)容并對文件進(jìn)行改名的功能,需要的可以參考下
    2025-03-03
  • C++中bitset位圖介紹及模擬實(shí)現(xiàn)

    C++中bitset位圖介紹及模擬實(shí)現(xiàn)

    位圖就是用每一位來存放某種狀態(tài),適用于海量數(shù)據(jù),本文就介紹一下C++中bitset位圖介紹及模擬實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-07-07

最新評論

榕江县| 黄大仙区| 循化| 汉中市| 宁陕县| 洛浦县| 楚雄市| 岑溪市| 辽宁省| 宁海县| 洞口县| 永丰县| 洞头县| 綦江县| 张北县| 白银市| 杭州市| 班戈县| 福鼎市| 盐亭县| 芦溪县| 子洲县| 武强县| 沭阳县| 古浪县| 屏东市| 育儿| 新建县| 蓬溪县| 道孚县| 镇康县| 甘德县| 荃湾区| 深州市| 新昌县| 云和县| 寿宁县| 临朐县| 钟祥市| 富阳市| 土默特左旗|