图片的拖动布局
此例實現將圖片拖動到窗口中展示,并實現隨著圖片個數整體的布局也發生變化。
主要代碼如下:
拖動進入事件
程序繼承自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);才能接收拖動:
另外繼承于qmainwindow的程序,要實現自己的布局,必須創建一個qwidget作為中心窗體,再在其上設置布局才能實現布局。qmainwindow具有自己默認的布局。
m_widget = new QWidget(this);//主窗口中設置布局,必須創建qwidget,并將其設置為中心窗口,否則無法使用自己的布局 setCentralWidget(m_widget); m_grid = new QGridLayout; m_widget->setLayout(m_grid);以上代碼只寫出了重要部分。
總結
- 上一篇: android 获取通讯录全选反选_Xa
- 下一篇: android开源tabview,Tab