这篇文章主要是介绍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