dxfans的个人主页

http://www.qtcn.org/bbs/u/119684  [收藏] [复制]

dxfans

www.hnmade.com

  • 27

    关注

  • 81

    粉丝

  • 616

    访客

  • 等级:侠客
  • 总积分:218
  • 男,1985-05-08

最后登录:2015-03-05

更多资料

日志

使用Qt实现简单的图片预览效果

2012-02-29 10:51
摘自Qt开发者驿站
Qt简化了UI界面的开发,相比MFC而言确实入门和进阶速度都快些;该文章主要讲解使用QListWidget加载图片进行排列并设置主窗口背景图片的功能;
界面效果如下图所示:上面两排为预加载的缩略图,单击单个缩略图则将对应的图片设置为主窗口的背景图片

  
主要代码如下,主窗口的构造函数功能(生成窗口部件与加载内容):
  1. //构造函数
    MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
    {
        //创建QListWidget部件
        m_pListWidget = new QListWidget(this);
        //设置QListWidget中的单元项的图片大小
        m_pListWidget->setIconSize(QSize(W_ICONSIZE, H_ICONSIZE));
        m_pListWidget->setResizeMode(QListView::Adjust);
        //设置QListWidget的显示模式
        m_pListWidget->setViewMode(QListView::IconMode);
        //设置QListWidget中的单元项不可被拖动
        m_pListWidget->setMovement(QListView::Static);
        //设置QListWidget中的单元项的间距
        m_pListWidget->setSpacing(10);

        //依次创建11个单元项
        for(int nIndex = 0;nIndex<11;++nIndex)
        {
            //获得图片路径
            QString strPath=QString(":/list/image/%1.jpg").arg(nIndex+1);
            //生成图像objPixmap
            QPixmap objPixmap(strPath);
            //生成QListWidgetItem对象(注意:其Icon图像进行了伸缩[96*96])---scaled函数
            QListWidgetItem *pItem = new QListWidgetItem(QIcon(objPixmap.scaled(QSize(W_ICONSIZE,H_ICONSIZE))),"animal tiger pig");
            //设置单元项的宽度和高度
            pItem->setSizeHint(QSize(W_ICONSIZE,H_ITEMSIZE));
            m_pListWidget->insertItem(nIndex, pItem);

        }

        setCentralWidget(m_pListWidget);

        //设置信号槽
        connect(m_pListWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(Slot_ItemClicked(QListWidgetItem*)));

        m_strPath = "";

        setWindowTitle("www.hnmade.com");
    }
设置窗口背景图片的代码如下:
  1. //设置主窗口背景
    void MainWindow::SetBgImage(const QString &strPath)
    {
        QPixmap objPixmap(strPath);
        QPalette palette = this->palette();
        if(strPath.isEmpty())
        {
            palette.setBrush(QPalette::Base, QBrush(QColor(0,0,255)));
        }
        else
        {
            palette.setBrush(QPalette::Base, QBrush(objPixmap.scaled(width(),height())));
        }
        setPalette(palette);
    }
由于后台编辑器没找到上传文件的地方,所以代码就共享不出来了,有不足的地方,大家一起讨论起解决。
摘自Qt开发者驿站
分类:默认分类|回复:1|浏览:2435|全站可见
 

下一篇: QT主窗口的停靠窗口实现

上一篇: 认识Qt

 
删除

雪花在落:我想问一下运行后初始界面为什么是蓝色的?
我们不点击QListWidgetItem(也就是那几幅图片), SetBgImage中的程序段不会被执行

2013-08-14 11:00 -

Powered by phpwind v8.7 Certificate Copyright Time now is:05-04 20:18
©2005-2016 QTCN开发网 版权所有 Gzip disabled