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); } |