QT17 --ListWidget

  • 手写一个界面
  • 新建项
  • 删除项
  • 删除所有项
  • 获取当前路径内所有文件名,
  • 用到的头文件包括
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
  • .h文件代码
private:
    Ui::Widget *ui;
    QListWidget *listWidget;
    QPushButton *addButton;
    QPushButton * deleteButton;
    QHBoxLayout *h1;
    QVBoxLayout *v1;
    QLineEdit *lineEdit;
    QPushButton *deleteAllButton;
    QPushButton *getFileButton;
    void setUi();
private slots:
    void addItemSlot();
    void deleteItemSlot();
    void deleteAllSlot();
    void getFileSlot();

  • .cpp文件代码
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setUi();
    //connect function
    QObject::connect(lineEdit,SIGNAL(returnPressed()),this,SLOT(addItemSlot()));
    QObject::connect(deleteButton,SIGNAL(clicked()),this,SLOT(deleteItemSlot()));
    QObject::connect(deleteAllButton,SIGNAL(clicked()),this,SLOT(deleteAllSlot()));
    QObject::connect(getFileButton,SIGNAL(clicked()),this,SLOT(getFileSlot()));
}
 void Widget::setUi()//设置界面
 {
     listWidget =new QListWidget;
     addButton =new QPushButton;
     addButton->setText("add");
     deleteButton=new QPushButton;
     deleteButton->setText("delete");
     h1 =new QHBoxLayout;
     v1 =new QVBoxLayout;
    lineEdit =new QLineEdit;
    h1->addWidget(lineEdit);
    h1->addWidget(addButton);
    h1->addWidget(deleteButton);
    deleteAllButton=new  QPushButton;
    deleteAllButton->setText("delete all items");
    getFileButton=new QPushButton;
    getFileButton->setText("get file context");
    v1->addWidget(listWidget);
    v1->addLayout(h1);
    v1->addWidget(deleteAllButton);
    v1->addWidget(getFileButton);
    this->setLayout(v1);
 }
  void Widget::getFileSlot()//获得文件夹内的文件名
  {
      qDebug()<<"get file name";
      QDir dir=QDir::current();
      QStringList fileNames=dir.entryList();
      listWidget->clear();

      for(int i=0;i<fileNames.size();i++)
      {
          QListWidgetItem *item=new QListWidgetItem();
          item->setText(fileNames.at(i));
          listWidget->addItem(item);
      }
  }
 void Widget::deleteAllSlot()//删除所有列表内容
 {
     while(listWidget->count())
     {
         QListWidgetItem *item=listWidget->takeItem(0);
         delete item;
     }
 }
void Widget::addItemSlot()//添加内容
{
    QString name=lineEdit->text();
    QListWidgetItem *item=new QListWidgetItem;
    item->setText(name);
    listWidget->addItem(item);
    lineEdit->clear();
}
void Widget::deleteItemSlot()//删除某一个列表内内容
{
        QListWidgetItem * item=listWidget->takeItem(listWidget->currentRow());
        delete item;
}
Widget::~Widget()
{
    delete listWidget;
    delete addButton;
    delete deleteButton;
    delete deleteAllButton;
    delete getFileButton;
    delete h1;
    delete v1;
    delete lineEdit;
    delete ui;
}
  • 需要用到的特殊函数
  1. listWidget->addItem(QListWidgetItem* item) 添加listWidget子项目;
  2. item=listWidget->takeItem(listWidget->currentRow()) 获取当前选中项目的指针
  3. listWidget->count() 获得当前listWidget内的文件数目;
  4. QDir dir=QDir::current() QStirngList fileNames=dir.entryList()获得当前路径内所有文件名的List列表;
  5. QString name=fileNames.at(int index) 返回list中指定位置元素的内容,为QString 类型;

你可能感兴趣的:(Qt-lalala)