qt5--列表控件QListWidget


需要   #include <QListWidget>            #include <QListWidgetItem>

列表控件可以讓我們以列表形式呈現內容,是界面更加有序美觀。QListWidget列表控件應當與QListWidgetItem一起使用,后者作為項被添加入列表控件中,也就是說列表控件中的每一項都是一個QListWidgetItem。這也是為什么我們說QListWidget是一個基於項(Item-based)的控件了

#include "win.h"
#include <QListWidget>

#include <QDebug>
#include <QPushButton>

Win::Win(QWidget *parent)
    : QWidget(parent)
{
    this->resize(500,400);

    QPushButton* btn=new QPushButton("按鈕",this);
    btn->move(400,350);
    connect(btn,&QPushButton::clicked,this,&Win::A);

    QListWidgetItem* lwi1=new QListWidgetItem("鋤禾日當午,");//創建列表項目
    lwi1->setTextAlignment(Qt::AlignHCenter);//設置文本對齊方式
    //Qt::AlignHCenter    水平居中
    //Qt::AlignLeft
    //Qt::AlignRight
    //Qt::AlignVCenter   垂直居中
    //Qt::AlignBottom
    //Qt::AlignTop

    //QListWidget* lw=new QListWidget(this);//創建列表控件
    lw=new QListWidget(this);//創建列表控件
    //lw->setViewMode(QListView::IconMode);//設置顯示模式為圖標模式--項目橫放
    lw->setViewMode(QListView::ListMode);//設置顯示模式為列表模式--豎放
    lw->addItem(lwi1);//給列表控件添加一個項目

    QStringList list;
    list<<"汗滴禾下土。"<<"誰知盤中餐,"<<"粒粒皆辛苦。";  //給list增加項目
    //無法設置對齊
    lw->addItems(list);//給列表控件添加一些項目

    QListWidgetItem* lwi2=new QListWidgetItem("李明");
    lw->insertItem(2,lwi2);//插入項目
    //參數1 序號
    //參數2 項目

    int s=lw->count();  //獲取列表項的總數目

    qDebug()<<s;


    connect(lw,&QListWidget::itemDoubleClicked,this,&Win::B);//雙擊某項目時發出信號
    //這個信號會自動傳遞一個參數:被雙擊項目的對象地址(QListWidgetItem *item)---0x54e458d210
    //item->text()  獲取項目文本---"粒粒皆辛苦。"
    connect(lw,&QListWidget::itemClicked,this,&Win::C);//單擊某項目時發出信號
    //這個信號會自動傳遞一個參數:被單擊項目的對象地址(QListWidgetItem *item)---0x54e458d210
    //item->text()  獲取項目文本---"粒粒皆辛苦。"


    connect(lw,&QListWidget::itemChanged,this,&Win::D);//如何觸發這個信號???
    //我增加項目  插入項目  都沒有觸發???
    connect(lw,&QListWidget::currentItemChanged,this,&Win::E);//當前項目變化時觸發信號
    //這個信號會自動傳遞二個參數:第一個當前項目的對象地址(QListWidgetItem *item)---0x54e458d210
    //第二個  前一項目的對象地址   注意:第一次選擇時這個地址不能用item->text()提取文本,因為地址是0x0
    connect(lw,&QListWidget::currentRowChanged,this,&Win::F);//當前項目變化時觸發信號
    //這個信號會自動傳遞一個參數(int):當前項目索引號

}

void Win::F(int currentRow){
    qDebug()<<"當前索引號改變了:"<<currentRow;
}
void Win::E(QListWidgetItem *item,QListWidgetItem *item1){
    qDebug()<<"當前項目改變了:"<<item->text()<<item1;
}
void Win::D(QListWidgetItem *item){
    qDebug()<<"項目改變了:"<<item->text();
}
void Win::C(QListWidgetItem *item){
    qDebug()<<"單擊了列表控件:"<<item->text();
}
void Win::B(QListWidgetItem *item){
    qDebug()<<"雙擊了列表控件:"<<item->text();
}

Win::~Win()
{

}


void Win::A(){
    int s=lw->currentRow();//返回當前項目的索引號
    QListWidgetItem *item = lw->takeItem(s);  //返回指定索引號項目的指針
    delete item;  //刪除指定項目
    lw->clear();  //清空


}

實例下載地址:https://share.weiyun.com/5VyRcJL  

 

 

 

 

 

 


免責聲明!

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



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