点击按钮弹出图片的实现
void MainWindow::btnTest()
{
QLabel* labelImage = new QLabel(this, Qt::Dialog |Qt::WindowCloseButtonHint); /* 去掉?按钮 */
labelImage->setWindowTitle("图片");
QString imagePath = "B:\\Image\\JPG\\3.jpg";
QFileInfo file(imagePath);
if(file.exists())
{
QImage image;
image.load(imagePath);
/* 下面这两句代码是Label跟随图片大小变化 */
//ret->resize(QSize(image.width(), image.height()));
//ret->setPixmap(QPixmap::fromImage(image));
/* 这两句是图片跟随label大小变化 */
labelImage->resize(300,300);
labelImage->setPixmap(QPixmap::fromImage(image.scaled(300, 300, Qt::KeepAspectRatio)));
}
else{
qDebug() 改为.,并且为labelImage安装事件过滤器,在程序中捕获labelImage的关闭事件,从而销毁指针; 按钮槽函数修改如下:
void MainWindow::on_pushButton_clicked()
{
QString imagePath = "D:\\AccountFile\\Desk\\build-Test-Desktop_Qt_5_13_0_MSVC2017_64bit-Debug\\debug\\Drunk_Kobayashi_Python.png";
QFileInfo file(imagePath);
if(!file.exists()) return;
QImage image;
image.load(imagePath);
if(image.isNull()) return;
labelImage = new QLabel(this, Qt::Dialog |Qt::WindowCloseButtonHint); /* 去掉?按钮 */
labelImage->setWindowTitle("图片");
labelImage->installEventFilter(this);
/* 下面这两句代码是Label跟随图片大小变化 */
//ret->resize(QSize(image.width(), image.height()));
//ret->setPixmap(QPixmap::fromImage(image));
/* 这两句是图片跟随label大小变化 */
labelImage->resize(300,300);
labelImage->setPixmap(QPixmap::fromImage(image.scaled(300, 300, Qt::KeepAspectRatio)));
labelImage->show();
}
在头文件中定义事件过滤器
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
在源文件中声明如下:
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if(obj == labelImage)
{
if(event->type() == QEvent::Close)
{
labelImage->removeEventFilter(this);
qDebug() |