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

基于Qt實現可拖動自定義控件

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

使用QT實現自定義類卡牌控件Card,使其能在父類窗口上使用鼠標進行拖動。

控件類頭文件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);       //設置控件窗口大小
}

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);                           //設置筆刷顏色
    brush.setStyle(Qt::SolidPattern);                     
    painter.setBrush(brush);                              //設置畫筆筆刷
    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;
}

//獲取控件坐標
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

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

相關文章

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

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

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

    QT5實現簡單的TCP通信的實現

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

    C++基于灰度圖上色GrayToColorFromOther的實現

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

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

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

    C語言實現單詞小助手改進版

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

    C++運算符重載圖文詳解

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

    C++鍵盤記錄程序代碼

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

    C++進一步認識類與對象

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

    基于QT和百度云api實現批量獲取PDF局部文字內容

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

    C++中bitset位圖介紹及模擬實現

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

最新評論

永善县| 东安县| 精河县| 平遥县| 轮台县| 黔西| 茂名市| 淳化县| 安丘市| 汉川市| 昭觉县| 高尔夫| 崇仁县| 钟祥市| 万年县| 鄂伦春自治旗| 新龙县| 灯塔市| 铁岭县| 乐都县| 微博| 天全县| 涪陵区| 宁津县| 岱山县| 油尖旺区| 台湾省| 易门县| 定安县| 长寿区| 孙吴县| 江都市| 自贡市| 磐石市| 甘肃省| 西林县| 长海县| 岳阳县| 亚东县| 化德县| 全南县|