丁香五月亚洲,欧美孕妇XXX高清在线,国产中文资源,精品r视频在线

【精華】使用Qt實現(xiàn)組態(tài)軟件中的控件拖拽功能

要在Qt中實現(xiàn)組態(tài)軟件中的控件拖拽功能,你可以使用Qt的圖形視圖框架(Graphics View Framework)。以下是一個簡單的示例代碼,演示如何創(chuàng)建可拖拽的控件:

#include <QApplication>#include <QGraphicsView>#include <QGraphicsScene>#include <QGraphicsRectItem>#include <QDragEnterEvent>#include <QDragMoveEvent>#include <QDropEvent>#include <QMimeData>class DraggableItem : public QGraphicsRectItem{public: DraggableItem(const QRectF& rect, QGraphicsItem* parent = nullptr) : QGraphicsRectItem(rect, parent) { setFlag(QGraphicsItem::ItemIsMovable); }protected: void mousePressEvent(QGraphicsSceneMouseEvent* event) override { if (event->button() == Qt::LeftButton) { QMimeData* mimeData = new QMimeData; QDrag* drag = new QDrag(event->widget()); drag->setMimeData(mimeData); drag->exec(); } QGraphicsRectItem::mousePressEvent(event); }};class DroppableScene : public QGraphicsScene{public: void dragEnterEvent(QGraphicsSceneDragDropEvent* event) override { if (event->mimeData()->hasFormat("application/x-draggable-item")) { event->acceptProposedAction(); } } void dragMoveEvent(QGraphicsSceneDragDropEvent* event) override { if (event->mimeData()->hasFormat("application/x-draggable-item")) { event->acceptProposedAction(); } } void dropEvent(QGraphicsSceneDragDropEvent* event) override { if (event->mimeData()->hasFormat("application/x-draggable-item")) { QByteArray itemData = event->mimeData()->data("application/x-draggable-item"); QDataStream dataStream(&itemData, QIODevice::ReadOnly); QRectF rect; dataStream >> rect; DraggableItem* item = new DraggableItem(rect); addItem(item); event->acceptProposedAction(); } }};int main(int argc, char *argv[]){ QApplication app(argc, argv); QGraphicsView view; DroppableScene scene; view.setScene(&scene); view.setAcceptDrops(true); view.show(); return app.exec();}

在示例代碼中,我們創(chuàng)建了兩個自定義類:DraggableItem和DroppableScene。

DraggableItem類是可拖拽的控件,繼承自QGraphicsRectItem。在mousePressEvent函數(shù)中,我們創(chuàng)建了一個QMimeData對象,并使用QDrag來進行拖拽操作。

DroppableScene類是可接受拖拽的場景,繼承自QGraphicsScene。在dragEnterEvent、dragMoveEvent和dropEvent函數(shù)中,我們判斷拖拽操作是否包含我們自定義的MIME數(shù)據(jù)格式,并根據(jù)需要執(zhí)行相應的操作。

main函數(shù)中,我們創(chuàng)建了一個QGraphicsView和一個DroppableScene對象,并將場景設置給視圖。我們還通過調(diào)用setAcceptDrops(true)來啟用拖拽功能。

你可以根據(jù)實際需求修改和擴展示例代碼,例如添加更多的自定義控件類、設置控件樣式、實現(xiàn)控件之間的聯(lián)動等。

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。

(0)
上一篇 2024年5月1日 下午2:42
下一篇 2024年5月1日 下午2:54

相關(guān)推薦

最新国产美女一区二区三区| 又黄又爽又猛的视频免费| 2020高清无码| 国产午夜精品一区二区三区漫画 | 香蕉视频美女曰韩| 六月网五月网| 中文字幕.www| 国产强伦姧在线观看| 46色呦呦6| 压欧美zozo| 亚州精品白浆久久毛片| 97人人爽精品国产麻豆| 无码久久精品国产亚洲av影片| 国产精品久久久久精| 99欧美| 国产无码三级片av| 中文字幕AV一区| 欧美成人熟妇xxxx| 精品国产高清在线观看国产| 亚洲色欲综合色欲网| 2023av中文字幕| 蜜桃一区二区三区自拍| 日韩av一区二区三区免费看| 亚洲久av| 91精品久久久久久综合| 一级激情片| 精品亚洲AⅤ无码午夜在线 | 日本高清黄| 久久18禁高潮出水呻吟娇喘| 免费手机三级片网站| 国产乱淫视频| 懂色av蜜臀av粉嫩av| 欧美久久久噜久噜久久XXⅩ交| 国产玖玖在线观看| 色综合天天视频在线观看| 极品婬荡少妇ⅩXXX| 亚洲国产在人线播放午夜免| 久久国产欧美日韩精品一区91麻豆天美 | 国产精品无码专区在线播放 | 亚洲精品视频在线观看视频| 日本中文字幕免费高清视频|