日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图片的拖动布局

發布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图片的拖动布局 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此例實現將圖片拖動到窗口中展示,并實現隨著圖片個數整體的布局也發生變化。
主要代碼如下:
拖動進入事件

void MainWindow::dragEnterEvent(QDragEnterEvent *event) {if(!event->mimeData()->urls()[0].fileName().right(3).compare("png")||!event->mimeData()->urls()[0].fileName().right(3).compare("jpg")){event->acceptProposedAction();}else{event->ignore();} }void MainWindow::dropEvent(QDropEvent *event) {const QMimeData* mime = event->mimeData();QPixmap pix(mime->urls()[0].toLocalFile());//實現圖片的自動布局emit signalCreateLabel(pix); }

程序繼承自mainwindow,重寫了dragEnterEvent事件和dropEvent事件,并做了篩選,只有png和jpg才能拖動到窗口中,拖動釋放后發送信號,創建顯示圖片的label,然后布局。

void MainWindow::slot_createLabel(QPixmap pix) {if(m_count != 0 && m_count % 3 == 0){m_row++;m_count = 0;}m_count++;//創建qlabel,并存入list中QLabel *imageLabel = new QLabel;imageLabel->setScaledContents(true);imageLabel->setPixmap(pix);layoutWidget(imageLabel,m_row,m_count-1); }

布局中以3列為一行。也可以加載圖片。

void MainWindow::on_action_Open_triggered() {QString fileName = QFileDialog::getOpenFileName(this,tr("選擇文件"),tr("F:/"),"images(*.jpg *.png)");QPixmap pix(fileName);emit signalCreateLabel(pix); }

通過action加載圖片后在現有圖片的基礎上拖動圖片進入到窗口,隨著圖片增加動態布局。
在拖動圖片的時候存在一個問題,需要在構造函數中添加setAcceptDrops(true);才能接收拖動:

setAcceptDrops(true);//不加此句,拖拽事件dragEnterEvent沒有進去,無法實現拖拽connect(this,&MainWindow::signalCreateLabel,this,&MainWindow::slot_createLabel);m_widget = new QWidget;//主窗口中設置布局,必須創建qwidget,并將其設置為中心窗口,否則無法使用自己的布局setCentralWidget(m_widget);m_grid = new QGridLayout/*(this)*/;m_widget->setLayout(m_grid);m_count = 0;m_row = 0;

另外繼承于qmainwindow的程序,要實現自己的布局,必須創建一個qwidget作為中心窗體,再在其上設置布局才能實現布局。qmainwindow具有自己默認的布局。

m_widget = new QWidget(this);//主窗口中設置布局,必須創建qwidget,并將其設置為中心窗口,否則無法使用自己的布局 setCentralWidget(m_widget); m_grid = new QGridLayout; m_widget->setLayout(m_grid);

以上代碼只寫出了重要部分。

總結

以上是生活随笔為你收集整理的图片的拖动布局的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。