无码人妻丰满熟妇奶水区码,麻豆一区区三,亚洲日韩欧美精品综合,亚洲无码地址

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

要在Qt中實(shí)現(xiàn)組態(tài)軟件中的控件拖拽功能,你可以使用Qt的圖形視圖框架(Graphics View Framework)。以下是一個(gè)簡單的示例代碼,演示如何創(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)建了兩個(gè)自定義類:DraggableItem和DroppableScene。

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

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

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

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

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

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

相關(guān)推薦

一区二区三区四区葵司| 91熟女在线十八区| 人妻激情视频一区中文字幕| 插美女逼逼网站| 久久精品色婷婷| 制服丝袜AV一区二区三区毛片| 高清av观看| 美女内射高潮在线看| 天天天天色| 精品久久动| 国外午夜福利精品视频| 国产精品成人欧美日韩| 久久久午夜伦理| 国产微拍精品一区| 欧美性爱护士一区| 99人人妻人人躁人人狠| 亚洲韩国日本欧美| 亚洲精品乱码久25| 看一区二区三区草逼视频| 久久精品国产电影三级片| 亚洲成人av中文字幕在线播放| 国产成人综合欧美一级午夜免费视频| 国产精品视频爽爽| 亚洲午夜成人福利激情网| 无码人妻大乱交一区二区三区| 日本韩国3级片久久国产精品 | 欧美欧美欧美欧美首页| 日本人妻中文视频| 成人久久福利| 日b视频免费播放| 天天射日日干| 色花堂久久一区| 人人超人人超碰国产| 午夜人妻福利视频| 日韩欧美成人电影六区| 亚洲9l久久久午夜成人视频| 日本人妻在线偷拍| 婷婷色五月天色综合| 欧美日一二三区| 一级生性活片免费视频影片V| 亚洲欧美在线中文麻豆|