Qt6教程之二(5) item widgets

这篇文章主要是介绍Qt的item widgets系列控件,主要包括list widget、tree widget、table widget三个控件,这三个控件在数据量不大的情况下比较实用,因为自带数据的处理及显示,使用起来非常方便。

list widget 叫列表视图,以列表的形式向用户展现数据;

tree widget 叫树形控件,以树型结构展示数据的父子关系;

table widget叫表格控件,以表格结构展现数据;

下面将进行逐一演示,这里不会针对所有的API进行行一一列举,仅仅是挑一些常用的API进行演示,让大家知道这个控件原来是这样使用的。

为了提高编码基本功,下述三个控件都将以纯代码的方式进行演示,话不多说,开始敲代码吧!

工程结构:

1、list widget

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QListWidgetItem>
#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void MSG(QListWidgetItem *item); //定义一个槽,用于写点击listwidget项时的逻辑


};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"

#include <QListWidget>
#include<QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

//设置窗口大小及标题
    resize(800,400);
    setWindowTitle("item widgets");

//创建对象并设置窗口大小
    QListWidget  *listWidget=new QListWidget(this);
    listWidget->resize(800,400);


//添加列表项
    listWidget->addItem("china");
    listWidget->addItem("USA");
    listWidget->addItem("Japan");
    listWidget->addItem(new QListWidgetItem("Qt6"));
    


//连接信号与槽,当点击列表项时处理其响应逻辑
connect(listWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(MSG(QListWidgetItem*)));


}

MainWindow::~MainWindow()
{
}

void MainWindow::MSG(QListWidgetItem *item)
{
    QMessageBox msg;
    msg.setText(item->text());
    msg.exec();
}

main.cpp

#include "mainwindow.h"

#include <QApplication>

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

运行效果:

2、tree widget

 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QListWidgetItem>
#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    //定义一个槽,用于写点击treewidget项时的逻辑
    void MSG(QTreeWidgetItem* item,int index);


};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"

#include <QListWidget>
#include<QMessageBox>
#include <QTreeWidget>
#include <QTreeWidget>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(800,400);
    setWindowTitle("item widgets");

    QTreeWidget  *treeWidget=new QTreeWidget(this);
    treeWidget->resize(800,400);
    treeWidget->setHeaderLabel("tree widget");
    treeWidget->setColumnCount(1);

    QTreeWidgetItem *qtw=new QTreeWidgetItem(QStringList()<<"root");
    treeWidget->addTopLevelItem(qtw);
    qtw->addChild(new QTreeWidgetItem(QStringList()<<"qq"));
    qtw->addChild(new QTreeWidgetItem(QStringList()<<"wechat"));
    qtw->addChild(new QTreeWidgetItem(QStringList()<<"chatGPT"));
    qtw->addChild(new QTreeWidgetItem(QStringList()<<"ttwter"));
    qtw->addChild(new QTreeWidgetItem(QStringList()<<"wsb"));

    connect(treeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(MSG(QTreeWidgetItem*,int)));


}

MainWindow::~MainWindow()
{
}

void MainWindow::MSG(QTreeWidgetItem* item,int index)
{
    QMessageBox msg;
    msg.setText(item->text(index));
    msg.exec();
}

main.cpp

#include "mainwindow.h"

#include <QApplication>

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

运行效果:

3、table widget

 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QListWidgetItem>
#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    
    void MSG(QTableWidgetItem *item);


};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"

#include <QListWidget>
#include<QMessageBox>
#include <QTableWidget>
#include <QTreeWidget>
#include <QTreeWidget>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(800,400);
    setWindowTitle("item widgets");

    QTableWidget  *tableWidget=new QTableWidget(10,10,this);
    tableWidget->resize(800,400);
    tableWidget->setItem(0,0,new QTableWidgetItem("nuber"));
    tableWidget->setItem(1,0,new QTableWidgetItem("11"));
    tableWidget->setItem(2,0,new QTableWidgetItem("22"));
    tableWidget->setItem(3,0,new QTableWidgetItem("33"));
    tableWidget->setItem(4,0,new QTableWidgetItem("44"));
    tableWidget->setItem(5,0,new QTableWidgetItem("55"));

    connect(tableWidget,SIGNAL(itemClicked(QTableWidgetItem*)),this,SLOT(MSG(QTableWidgetItem*)));


}

MainWindow::~MainWindow()
{
}

void MainWindow::MSG(QTableWidgetItem *item)
{
    QMessageBox msg;
    msg.setText(item->text());
    msg.exec();
}

main.cpp

#include "mainwindow.h"

#include <QApplication>

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

运行效果:

下一篇文章链接:二 Qt控件之六:contains

上一篇文章:Qt6教程之二(4) item views

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值