精华内容
下载资源
问答
  • QListWidget 显示图片

    千次阅读 2016-07-22 17:40:56
    You should use QListWidget (or QListView and subclass QAbstractItemModel) and set it'sview mode to IconMode. Example : m_listeWidget->setViewMode(QListWidget::IconMode); m_listeWidget->...

    You should use QListWidget (or QListView and subclass QAbstractItemModel) and set it'sview mode to IconMode.

    Example :

    m_listeWidget->setViewMode(QListWidget::IconMode);
    
    
    m_listeWidget->setIconSize(QSize(200,200));
    
    
    m_listeWidget->setResizeMode(QListWidget::Adjust);
    
    
    m_listeWidget->addItem(new QListWidgetItem(QIcon("../earth.jpg"),"Earth"));
    m_listeWidget->addItem(new QListWidgetItem(QIcon("../tornado.jpg"),"Tornado"));
    m_listeWidget->addItem(new QListWidgetItem(QIcon("../ics.jpg"),"Wallpaper"));
    

    Result :

    enter image description here

    展开全文
  • QListWidget显示图片缩略图,打开加载本地图片,可以加载多张,按缩略图方式显示。
  • Pyqt5 QListWidget 显示图片缩略图

    千次阅读 2020-03-01 23:25:08
    # 网上看到了些 关于 QListWidget显示图标的功能 # 通过和piexif 结合 把图片的缩略图给显示出来 import sys from PyQt5.QtCore import QSize, Qt from PyQt5.QtGui import QPixmap, QIcon from PyQt5.QtWidgets...
    # 2020-03-01 
    # 网上看到了些 关于 QListWidget 有显示图标的功能
    # 通过和piexif 结合 把图片的缩略图给显示出来
    import sys
    
    from PyQt5.QtCore import QSize, Qt
    from PyQt5.QtGui import QPixmap, QIcon
    from PyQt5.QtWidgets import QWidget, QApplication, QListWidget, QListView, QHBoxLayout, QListWidgetItem
    import os
    import piexif
    
    class IconListWidget(QWidget):
        def __init__(self, parent=None):
            super(IconListWidget, self).__init__(parent)
            self.resize(1024, 768)
            self.setupUi()
    
        def setupUi(self):
            self.iconlist = QListWidget()
            self.iconlist.setViewMode(QListView.IconMode)
            self.iconlist.setSpacing(10)
            self.iconlist.setIconSize(QSize(100, 100))
            self.iconlist.setMovement(False)
            self.iconlist.setResizeMode(QListView.Adjust)
            hlayout = QHBoxLayout()
            hlayout.addWidget(self.iconlist)
    
            self.setLayout(hlayout)
    
            
            self.additems()
    
        def additems(self):
            # 读取缩略图
            files = os.listdir("d:/1")
            for f1 in files:
                exif_dict = piexif.load("d:/1/"+f1)
                thumbnail = exif_dict.pop("thumbnail")
                if thumbnail is not None:
                    pix1 = QPixmap()
                    pix1.loadFromData(thumbnail,"JPG")
              
                item1 = QListWidgetItem(QIcon(pix1.scaled(100,100,  Qt.KeepAspectRatio, Qt.SmoothTransformation)), os.path.split(f1)[-1])
                self.iconlist.addItem(item1)
    
    
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        mainwin = IconListWidget()
        mainwin.show()
        sys.exit(app.exec_())
    
    展开全文
  • 图片大概有1000多张的样子,以缩略图的形式显示,每次显示的时候都要等好长时间。如何解决? 多线程加载可以吗?应该怎么弄?
  • QListview,QListWidget默认实现是图片Icon显示在文字左边 但是在很多菜单中,我们需要将图片放置左边,然而又没有美工去做图片(做了图片就可以直接按钮贴图),就需要我们手工去实现这种方式,但Listview要自定义...

    在这里插入图片描述

    QListview,QListWidget默认实现是图片Icon显示在文字左边

    但是在很多菜单中,我们需要将图片放置左边,然而又没有美工去做图片(做了图片就可以直接按钮贴图),就需要我们手工去实现这种方式,但Listview要自定义位置,需要去该源码并且很麻烦。

    实现图片显示在文本右边

    在这里插入图片描述

    首先点开 ui文件,点Item属性按钮

    在这里插入图片描述

    找到Icon部分,手动添加自己的资源

    在这里插入图片描述

    最后找到文本部分,显示设置成从右往左

    在这里插入图片描述

    这样做完大家会发现,还是图片在文字左边,并没有达到相要的效果。
    这时我们加入一行代码即可
    ui->listWidget->setLayoutDirection(Qt::RightToLeft);

    这样做在多列表时会比较麻烦 ,还有第二种方法用代码实现

    首先需要在Item中加入数据,然后获取Listview的行数,进行遍历然后设置QListWidgetItem的setTextAlignment()即可, 加Icon直接调用Item seticon这种比较麻烦的在于设置选中后的样式

    纯属自己搞着玩,觉得不错的点个赞把~

    展开全文
  • 本文主要用关键代码,介绍用Qt的QListWidget控件显示缩略图,实现图片底端居中对齐,文字顶端居中对齐。(提醒:可以直接跳过从后面的步骤1.1开始看起) 注意关键函数用法总结: void QListWidget::addItem...

    本文主要用关键代码,介绍用Qt的QListWidget控件显示缩略图,实现图片底端居中对齐,文字顶端居中对齐。(提醒:可以直接跳过从后面的步骤1.1开始看起)

     

    注意关键函数用法总结:

    void QListWidget::addItem(QListWidgetItem *aitem):QListWidget添加QListWidgetItem项。

    QListWidgeItem::setIcon(QIcon):设置QListWidgeItem项的图标。

    QListWidgeItem::setTxt(QString):设置QListWidgeItem项的内容,通常和setIcon()函数搭配使用,上面是图标下面是文字。

    void setSizeHint(const QSize &size):设置QListWidgeItem项的单元格大小。如果把每一个QListWidgeItem等同于与一个QPushbutton按钮,则该函数可以理解为设置QPushbutton按钮的尺寸大小,因为每一个QListWidgeItem项都可以跟按钮一样实现触发和鼠标滑过,被选中功能。

    void itemClicked(QListWidgetItem *item):单击QListWidgeItem项时触发一个信号。可以通过函数QListWidget::row(item)在获取当前选中的是哪一个QListWidgetItem 项。注意:加入有九宫格排列的QListWidgetItem,其在QListWidget中的排列顺序是从左到右,从上到下进行排序的。即:

    0  1  2

    3  4  5

    6  7  8

     

    void setItemWidget(QListWidgetItem *item, QWidget *widget):将QListWidgetItem和QWidget关联起来,其中QWidget可以是一个QWidget,也可以是一个QPushbutton按钮。

     

    列表控件QListWidge主要是通过包含一系列的QListWidgeItem项来进行显示,换句话说,列表控件QListWidge是QListWidgeItem项的集合。其中,列表控件QListWidge包含QListWidgeItem项主要用到函数void QListWidget::addItem(QListWidgetItem *aitem);下面是一个具体示例。

    listWidget->addItem(listWidgetItem);

    所以,我们要实现的是在每一个QListWidgeItem项中显示上面是图片,下面是文字。如果要显示的图片大小是固定的,可以直接用函数QListWidgeItem::setIcon(QIcon)和函数QListWidgeItem::setTxt(QString)来实现。两个函数的用法跟QPushbutton的用法一模一样,可以直接把QListWidgeItem当成一个按钮来处理就好。

    但是,现在要求显示的图片大小是任意的,而显示图片的位置是在一个给定的方框内。要实现这种方式显示图片,第一步就是在每一个QListWidgeItem项中嵌入一个QWidget,然后再在这个QWidget中实现任意想要的效果。比如图片底端居中对齐,文字顶端居中对齐。QListWidgeItem项中嵌入一个QWidget需要用到函数void setItemWidget(QListWidgetItem *item, QWidget *widget):

    void setItemWidget(QListWidgetItem *item, QWidget *widget);

    下面是一个应用实例:

    listWidget->setItemWidget(listWidgetItem,itemWidget);

     

    1.1实现上述功能,只需要调用下面两个函数即可实现。

    initListWidget();
    createListWidget();

     

    函数initListWidget()定义如下:

    void QWidget::initListWidget()
    {
        ICON_SIZE = QSize(210,210);
        CELL_SIZE = QSize(210,210);
        listWidget = new QListWidget(this);
        stackWidgetLayout->addWidget(listWidget);
        listWidget->setIconSize(ICON_SIZE);
        listWidget->setResizeMode(QListView::Adjust);
        listWidget->setViewMode(QListView::IconMode);
        listWidget->setMovement(QListView::Static);
        listWidget->setSpacing(10);
        listWidget->horizontalScrollBar()->setDisabled(true);
        imageLabel = new QLabel;
        imageLabel->setWindowTitle("TITLE");
    }

     

    函数createListWidget()定义如下:

    void QWidget::createListWidget()
    {
        listWidget->clear();
        //获取文件夹下的文件名称
        imagePath = "D:/image";
        QDir dir(imagePath);
        if (!dir.exists()) {
            return;
        }
        dir.setFilter(QDir::Files | QDir::NoSymLinks);
        QStringList filters;
        filters << "*.png" << "*.jpg";
        dir.setNameFilters(filters);
        list = dir.entryList();
        if (list.count() <= 0)
        {
            return;
        }
    
        // 创建单元项
        for (int i = 0; i<list.count(); ++i)
        {
            QPixmap pixmap(path + "\\" + list.at(i));
            QListWidgetItem *item = new QListWidgetItem;
            QWidget *widget = new QWidget;
            QVBoxLayout *widgetLayout = new QVBoxLayout;
            QLabel *imageLabel = new QLabel;
            QLabel *txtLabel = new QLabel(tr("%1").arg(list.at(i)));
            widget->setLayout(widgetLayout);
            widgetLayout->setMargin(0);
            widgetLayout->setSpacing(0);
            widgetLayout->addWidget(imageLabel);
            widgetLayout->addWidget(txtLabel);
            if(pixmap.width()>227||pixmap.height()>227)
            {
                pixmap=pixmap.scaled(234,234,Qt::KeepAspectRatio);
            }
            imageLabel->setPixmap(pixmap);
            txtLabel->setFixedHeight(30);
            txtLabel->setWordWrap(true);
    
            item->setSizeHint(QSize(150,190));
            mainwidget->addItem(item);
            mainwidget->setSizeIncrement(150,190);
            mainwidget->setItemWidget(item,widget);
        }
    
        // 信号与槽
        connect(mainwidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(On_listWidgetItem(QListWidgetItem*)));
    }

     

    1.2实现的效果如下图所示:

     

     

     

     

     

    参考内容:

    https://blog.csdn.net/csdn1027192411/article/details/52123556(重点参考)

    https://blog.csdn.net/qq_20991549/article/details/79524256(主要参考在QListWidget中嵌入QWidget用法)

    展开全文
  • 多张图片以缩略图的形式显示在列表中 QListWidget *m_ImageList = new QListWidget; m_ImageList->setViewMode(QListWidget::IconMode);//显示模式 m_ImageList->setIconSize(QSize(100, 100));//设置...
  • QListWidget显示Icon和文字

    千次阅读 2020-12-23 21:30:47
    QListWidgetItem *item = new QListWidgetItem(facePic, detectIDItems[y], ui.listWidget_picAbnorDetect); //三个参数icon, 文字, listWidget item->setSizeHint(QSize(40, 40)); //设置item宽度 ...
  • 在iconmodel下显示图片的item,当item数量过多时就不会有图片显示了 这个widget图片过多还会导致其他页面的图片显示不出来 断点分析: 在加载第300多张图片的时候,pixmap.loadFromData就是空了 解密函数返回的...
  • Qt QListWidget实现图片缩略图列表

    万次阅读 2017-05-11 10:28:05
    将本机中的多张图片以缩略图的形式显示在列表中 环境: 我们已经做好了菜单栏和动作。参考:http://blog.csdn.net/v_xchen_v/article/details/71524160 实现: mymenu.h #ifndef MYMENU_H #define MYMENU_H #...
  • 一个图像浏览小工具,用到一个缩略图列表,来查看文件夹内的图片文件。
  • 1、代码 #include<QApplication>...QListWidget> #include<QPixmap> #include<QIcon> #include<unistd.h> int main(int argc,char* argv[]) { QApplication app(argc,argv...
  • void GasAlarm::initListWidget() { ui->listWidget->...// 设置为图标显示模式 ui->listWidget->setViewMode(QListView::IconMode); // 设置为自适应 ui->listWidget->setResizeMode(QL...
  • QListWidget

    2017-02-24 14:52:47
    QListWidget添加自定义QWidget QListWidget方式显示缩略图 使用Qt实现简单的图片预览效果
  • QListWidget方式显示缩略图

    千次阅读 2013-07-09 17:33:32
    最近在工作中经常遇到了一个问题就是把把文件夹中的图片全部以缩略图的形式显示出来,刚开始的时候一头雾水,不知道怎么办,经过在网上查资料,发现QListWidget控件可以实现图片的缩略图显示,但是不知道怎么利用这...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 766
精华内容 306
关键字:

qlistwidget显示图片