图片的拖动布局
此例實現(xiàn)將圖片拖動到窗口中展示,并實現(xiàn)隨著圖片個數(shù)整體的布局也發(fā)生變化。
主要代碼如下:
拖動進入事件
程序繼承自mainwindow,重寫了dragEnterEvent事件和dropEvent事件,并做了篩選,只有png和jpg才能拖動到窗口中,拖動釋放后發(fā)送信號,創(chuàng)建顯示圖片的label,然后布局。
void MainWindow::slot_createLabel(QPixmap pix) {if(m_count != 0 && m_count % 3 == 0){m_row++;m_count = 0;}m_count++;//創(chuàng)建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加載圖片后在現(xiàn)有圖片的基礎(chǔ)上拖動圖片進入到窗口,隨著圖片增加動態(tài)布局。
在拖動圖片的時候存在一個問題,需要在構(gòu)造函數(shù)中添加setAcceptDrops(true);才能接收拖動:
另外繼承于qmainwindow的程序,要實現(xiàn)自己的布局,必須創(chuàng)建一個qwidget作為中心窗體,再在其上設(shè)置布局才能實現(xiàn)布局。qmainwindow具有自己默認的布局。
m_widget = new QWidget(this);//主窗口中設(shè)置布局,必須創(chuàng)建qwidget,并將其設(shè)置為中心窗口,否則無法使用自己的布局 setCentralWidget(m_widget); m_grid = new QGridLayout; m_widget->setLayout(m_grid);以上代碼只寫出了重要部分。
總結(jié)
- 上一篇: android 获取通讯录全选反选_Xa
- 下一篇: android开源tabview,Tab