Qt 显示图像图像缩略图

Qt简化了UI界面的开发,相比MFC而言确实入门和进阶速度都快些;该文章主要讲解使用QListWidget加载图片进行排列并设置主窗口背景图片的功能;

界面效果如下图所示:上面两排为预加载的缩略图,单击单个缩略图则将对应的图片设置为主窗口的背景图片

 

 

 

 

 

 

 

 

 

 

 

 

 


主要代码如下,主窗口的构造函数功能(生成窗口部件与加载内容):

//构造函数
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" );
}

设置窗口背景图片的代码如下:

//设置主窗口背景
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);
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值