做外贸营销型网站,成考做那个网站的题比较好,电子商务网站的建设ppt,营销方案策划此例实现将图片拖动到窗口中展示#xff0c;并实现随着图片个数整体的布局也发生变化。 主要代码如下#xff1a; 拖动进入事件
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{if(!event-mimeData()-urls()[0].fileName().right(3).compare(png并实现随着图片个数整体的布局也发生变化。 主要代码如下 拖动进入事件
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);以上代码只写出了重要部分。