QListWidget


 

ui->listWidget->setViewMode(QListView::ListMode);   //設置顯示模式為列表模式
//設置列表
QListWidgetItem *item=new QListWidgetItem;
item->setSizeHint(QSize(100,35));//
item->setBackgroundColor(RGB(247,247,247));//正常背景顏色,可以用來設置交叉行變色
ui->listWidget->addItem(item);

設置QListWidget中item的背景色,使用QSS

 

"QListWidget::Item:hover{background:#E8E8E8;}"//懸浮
"QListWidget::Item:pressed{background:#E8E9ED;}"//按下
"QListWidget::item:selected:!active{background:#E8E9ED;}"//按下后,當前活動控件不在列表中
"QListWidget::item:selected{background:#E8E9ED;}"//按下后鼠標移動到其它位置

去掉item選中的虛線框

ui->listWidget->setFocusPolicy(Qt::NoFocus);

1、響應選中行信號

connect(listwidget1,SIGNAL(currentRowChanged(int)),this,SLOT(listwidget1_Selected(int)));
當切換到選中行時響應
void Core::List_Selected1(int row)
{    
if(row >= 0)   
{
//row要判斷,row為當前選中行號
}
}

 

2、響應單擊信號connect(listwidget1,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(listwidget1_eclicked(QListWidgetItem*)));
每次單擊item都會響應

void Core::kit_listwidget1_eclicked(QListWidgetItem*)
{
  int row = listwidget1->currentRow();//當前點擊行序號
}

3、雙擊item信號

connect(listwidget1,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(listwidget1_eclicked(QListWidgetItem*)));

每次雙擊item都會響應

void Core::kit_listwidget1_eclicked(QListWidgetItem*)
{
  int row = listwidget1->currentRow();//當前點擊行序號
}

4、右鍵菜單

代碼添加:

設置屬性:listwidget3->setContextMenuPolicy( Qt::CustomContextMenu );

槽函數::connect(listwidget3, SIGNAL(customContextMenuRequested(const QPoint&)),
this, SLOT(on_listwidget3_customContextMenuRequested(const QPoint&)))

 

5、在響應的組合鍵中添加:

//響應組合鍵全選
if ((event->modifiers() == Qt::ControlModifier) and (event->key() == Qt::Key_A) )
    {
        qDebug()<<"ctrl-a";

        for(int i = 0;i < this->count(); i++)//項目數
        {
            this->setCurrentRow(i,QItemSelectionModel::Select);
        }
    }

6、鼠標移動到Item內的信號

先要設置

列表->setMouseTracking(true);//true表示鼠標不按下移動到item內就發現信號,false表示鼠標至少按下一個按鍵后移動到item內,

connect( 列表, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(slotOnItemEntered(QListWidgetItem*)) ) ;
然后添加槽函數
void slotOnItemEntered(QListWidgetItem*p);


//根據設置鼠標移動到itme響應
void slotOnItemEntered(QListWidgetItem*p)
{
//
}

 

一些常用函數:

QListWidget::QListWidget ( QWidget *parent = 0 )       // 構造一個父對象為parent的ListWidget。
 
void QListWidget::addItem ( const QString & label )     // 添加一個新的項目,在新添加的項目中添加label標簽。
 
void QListWidget::addItem ( QListWidgetItem *item )   // 添加項目item。
 
void QListWidget::addItems ( const QStringList & labels )   // 添加一列項目。
 
void QListWidget::clear () [slot]   // 清除該ListWidget中的所有項目。
 
QListWidgetItem *QListWidget::currentItem () const    //返回當前活動項目。
 
void QListWidget::editItem ( QListWidgetItem *item )    //如果項目item是可編輯的,開始編輯項目item。
 
QList QListWidget::findItems( constQString & text, QT::MatchFlags flags ) const  //查找匹配字符串text的項目,並返回查找結果。
 
void QListWidget::insertItem ( int row, QListWidgetItem *item )    //在行row處插入項目item。
 
void QListWidget::insertItem ( int row, const QString &label )        //這是一個重載函數,函數功能同9),在行row處插入標簽為label的新項目。
 
void QListWidget::insertItems ( int row, const QStringList & labels )    //在行row處插入一列項目。
 
QListWidgetItem *QListWidget::item ( int row ) const    //返回行row處的項目,如果行row處沒有項目則返回0。
 
QListWidgetItem*QListWidget::itemAt ( const QPoint & p ) const    //返回點p處的項目。
 
QListWidgetItem *QListWidget::itemAt ( int x, int y ) const    //返回坐標(x,y)處的項目。
 
QWidget *QListWidget::itemWidget ( QListWidgetItem *item ) const    //返回項目item處顯示的控件。
 
QListWidgetItem *QListWidget::takeItem ( int row )   // 移除行row處的項目,並返回項目控件。
 
void QListWidget::removeItemWidget ( QListWidgetItem *item )    //刪除項目item處的控件。
 
int QListWidget::row ( const QListWidgetItem *item ) const    //返回項目item所在的行。
 
QList QListWidget::selectedItems ()const    //返回所有被選中的項目的控件。
 
void QListWidget::setCurrentItem ( QListWidgetItem *item )    //設置項目item為當前項目。
 
void QListWidget::setItemWidget ( QListWidgetItem *item, QWidget*widget )    //設置控件widget為項目item的顯示控件。
 
void QListWidget::sortItems ( QT::SortOrder order = QT::AscendingOrder )    //把項目按照order進行排序。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM