QT QListWidget、QTreeWidget控件的简单使用

QT QListWidget、QTreeWidget控件的简单使用

一、简述

       记--QT QListWidget、QTreeWidget控件的简单例子。

       QListWidget例子:链接: https://pan.baidu.com/s/15how2E933Ztt-f_31t-Acg 提取码: 12tp 

       QTreeWidget例子:链接: https://pan.baidu.com/s/1MSTwEyJzCWAfMVmUZ9B7Lg 提取码: 2a8d 

二、QListWidget例子

        2.1 效果

        

        2.2 工程结构

         

         

          2.3 源文件

           ListWidgetDemo.pro文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ListWidgetDemo
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui


           mainwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_actionOpen_triggered();

    void on_listWidget_doubleClicked(const QModelIndex &index);

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


           main.cpp文件

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}


           mainwindow.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>//文件对话框
#include <QFileInfo>//文件信息相关

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_actionOpen_triggered()//Open菜单的响应槽函数
{
    //打开文件对话框,选择文件(可以多个),返回选中的文件绝对路径集合
    QStringList list = QFileDialog::getOpenFileNames(this);

       //list列表中,存放的是文件的文件路径
       //循环分别读取列表中的每一条的内容

       //打开文件,得到文件的名字,显示到listWidget
       for(int i=0;i<list.count();i++)
       {
           QString filepath = list.at(i);
           QFileInfo info(filepath);
           QString fileName = info.fileName();//从绝对路径中取出文件名及后缀
           ui->listWidget->addItem(fileName);//添加到listWidget
       }
}

void MainWindow::on_listWidget_doubleClicked(const QModelIndex &index)//listWidget数据项的双击响应槽函数
{
    QString filePath = ui->listWidget->currentItem()->text(); //获得当前条目上的内容:文件的路径

     QFile file(filePath);
     bool isOk = file.open(QIODevice::ReadOnly);
     if(isOk)
     {
         QByteArray array = file.readAll();//读取文件内容
         ui->textBrowser->setText(array);//将文件内容设置到textbroswer
     }

     file.close();
}

三、QTreeWidget例子

        3.1 效果 

               

        3.2 工程结构

                

               布局:

                

        3.3 源文件

         TreeWidgetDemo.pro文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = TreeWidgetDemo
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui


         mainwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTreeWidget>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    QTreeWidgetItem *m_itemHdrs;//头文件 子项
    QTreeWidgetItem *m_itemSrcs;//源文件 子项
    QTreeWidgetItem *m_itemUIs;//界面文件 子项
    QTreeWidgetItem *m_itemOthers;//其它文件 子项
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_actionOopen_triggered();//Open菜单项的点击响应槽函数

    void on_treeWidget_doubleClicked(const QModelIndex &index);//QTreeWidget选项的双击响应槽函数

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


         main.cpp文件

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}


         mainwindow.cpp文件            

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>//文件对话框

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->treeWidget->setColumnCount(1);//设置列数
    ui->treeWidget->setHeaderLabel("项目结构");//设置标题

    //设置水平滚动条
    ui->treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents);//大小适配内容
    ui->treeWidget->header()->setStretchLastSection(false);//作用:当内容过长时也全部显示,不会将超出的部分用...表示
    ui->treeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);//需要时(内容长度大于控件长度时)显示水平滚动条

    m_itemHdrs = new QTreeWidgetItem((QTreeWidget*)0, QStringList("头文件"));
    m_itemSrcs = new QTreeWidgetItem((QTreeWidget*)0, QStringList("源文件"));
    m_itemUIs = new QTreeWidgetItem((QTreeWidget*)0, QStringList("界面文件"));
    m_itemOthers = new QTreeWidgetItem((QTreeWidget*)0, QStringList("其它文件"));

    ui->treeWidget->insertTopLevelItem(0, m_itemOthers);//在第0列添加,(头插法,后添加的在上面)
    ui->treeWidget->insertTopLevelItem(0, m_itemUIs);
    ui->treeWidget->insertTopLevelItem(0, m_itemSrcs);
    ui->treeWidget->insertTopLevelItem(0, m_itemHdrs);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_actionOopen_triggered()//Open 菜单的点击响应函数
{
    //打开文件对话框,选择文件(可以多个),返回选中的文件绝对路径集合
    QStringList list = QFileDialog::getOpenFileNames(this, "请选择文件", "D:\\QtProj\\TreeWidgetDemo");

    //list列表中,存放的是文件的文件路径
    //循环分别读取列表中的每一条的内容

    //打开文件,得到文件的名字,显示到listWidget
    for(int i=0; i<list.count(); i++)
    {
       QString filepath = list.at(i);
       QFileInfo info(filepath);
       QString fileName = info.fileName();//从绝对路径中取出文件名及后缀
       QTreeWidgetItem *item = new QTreeWidgetItem((QTreeWidget*)0, QStringList(fileName));//创建子项
       if(fileName.endsWith(".h"))//以.h结尾
       {
            m_itemHdrs->addChild(item);//添加到头文件 类别
       }
       else if(fileName.endsWith(".cpp"))//以.cpp结尾
       {
            m_itemSrcs->addChild(item);//添加到源文件 类别
       }
       else if(fileName.endsWith(".ui"))//以.ui结尾
       {
            m_itemUIs->addChild(item);//添加到界面文件 类别
       }
       else
       {
            m_itemOthers->addChild(item);//添加到其它文件 类别
       }

    }
}

void MainWindow::on_treeWidget_doubleClicked(const QModelIndex &index)//双击列表项 的响应函数
{
    QString filePath = ui->treeWidget->currentItem()->text(0); //获得当前条目上的内容:文件的路径

    QFile file("D:\\QtProj\\TreeWidgetDemo\\"+filePath);//应该获取 打开的文件的路径
    bool isOk = file.open(QIODevice::ReadOnly);
    if(isOk)
    {
        QByteArray array = file.readAll();//读取文件内容
        ui->textBrowser->setText(array);//将文件内容设置到textbroswer
    }

    file.close();//关闭文件
}

猜你喜欢

转载自blog.csdn.net/nanfeibuyi/article/details/85337216