qt三大控件

1.QListWidget控件

先在ui界面将 QListWidget拖出来竖直对齐

再去代码中实现文本插入

两种插入方式

方法1

cpp 复制代码
    //listWidget使用       有左右中间对齐需求
   QListWidgetItem * item=new QListWidgetItem("床前明月光");
//    //上面只是独立的一句话,没有关联起来
  ui->listWidget->addItem(item);(关联起来)
//    //设置文本对齐方式     
   item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);

方法2

cpp 复制代码
//    无左右中间对齐需求
    //QStringlist==QList<QString>==list<string>  //容器
    QStringList list;
    list<<"窗前明月光"<<"疑是地上霜"<<"举头望明月"<<"低头思故乡";//左插法
    ui->listWidget->addItems(list);//但这种办法没法设置居中  居中是由上面的QListWidgetItem的
//    setTextAlignment  because QStringList只是一种容器

区别在于第一种可以设置居中左右

居中是由上面的QListWidgetItem的
setTextAlignment 不行 because QStringList只是一种容器

2.QTreeWidget控件

和上一个一样,先再ui界面创建一个QTreeWidge组件,然后拖进去居中

代码像树一样 分为三个步骤

复制代码
1.treeWidget 树控件
ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");
2.Item创建
QTreeWidgetItem * liItem=new QTreeWidgetItem(QStringList()<<"力量"<<"叠加");
3.创建子Item  挂载到顶层的Item上    
QStringList heroL1;    
heroL1<<"廖天华"<<"大招:猪鼻攻击,无视对方所有伤害,三秒无敌";    
QTreeWidgetItem * l1=new QTreeWidgetItem(heroL1);    
liItem->addChild(l1);
cpp 复制代码
//treeWidget 树控件
    ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");

    //2.Item创建
    QTreeWidgetItem * liItem=new QTreeWidgetItem(QStringList()<<"力量"<<"叠加");
    //添加顶层级别的Item
    ui->treeWidget->addTopLevelItem(liItem);

    QTreeWidgetItem * minItem=new QTreeWidgetItem(QStringList()<<"敏捷"<<"叠加");
    //添加顶层级别的Item
    ui->treeWidget->addTopLevelItem(minItem);

    QTreeWidgetItem * zhiItem=new QTreeWidgetItem(QStringList()<<"智力"<<"叠加");
    //添加顶层级别的Item
    ui->treeWidget->addTopLevelItem(zhiItem);

    //3.创建子Item  挂载到顶层的Item上
    QStringList heroL1;
    heroL1<<"廖天华"<<"大招:猪鼻攻击,无视对方所有伤害,三秒无敌";
    QTreeWidgetItem * l1=new QTreeWidgetItem(heroL1);//写在外面
    liItem->addChild(l1);

    QStringList heroL2;
    heroL2<<"朱星"<<"大招:假寐,你以为我睡了,其实我在心里睁眼睛";
    QTreeWidgetItem * l2=new QTreeWidgetItem(heroL2);
    liItem->addChild(l2);

    QStringList heroL3;
    heroL3<<"秦晓峰"<<"大招:失去味觉嗅觉,身体出现异常,脊椎不舒服,开始躺地上讹人";
    QTreeWidgetItem * l3=new QTreeWidgetItem(heroL3);
    zhiItem->addChild(l3);

    QStringList heroL4;
    heroL4<<"郑江博"<<"大招:懂得都懂";
    QTreeWidgetItem * l4=new QTreeWidgetItem(heroL4);
    zhiItem->addChild(l4);

    QStringList heroL5;
    heroL5<<"张驰"<<"大招:沉默";
    QTreeWidgetItem * l5=new QTreeWidgetItem(heroL5);
    minItem->addChild(l5);

    QStringList heroL6;
    heroL6<<"刘波"<<"大招:改写你们的大招";
    QTreeWidgetItem * l6=new QTreeWidgetItem(heroL6);
    minItem->addChild(l6);

实现效果

3.QTableWidget控件

和上一个一样,先再ui界面创建一个QTableWidge组件,然后拖进去居中

代码如下:

复制代码
    //tableWidget的使用       按照逻辑由上到下
复制代码
//    1设置列数   
 ui->tableWidget->setColumnCount(3);
复制代码
//    2.设置水平表头标签    
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
复制代码
//    3.设置行数    
 ui->tableWidget->setRowCount(5);
复制代码
//    4.设置正文   填数据
    ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));

这里很巧妙,用到了一个for循环进行数据填写

cpp 复制代码
//准备容器放名称
     QStringList nameList;
     nameList<<"亚瑟"<<"妲己"<<"韩信"<<"孙悟空"<<"瑶姐";

     //准备名称放性别
     QList<QString> sexList;
     sexList<<"男"<<"女"<<"男"<<"男"<<"女";

     for(int i=0;i<5;i++){
         int col=0;
         ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));

         ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));
         //如何将Int转为QString
         ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(18+i) ));
     }

追加一个知识 按键再这张表格里面删除和添加

cpp 复制代码
//点击添加赵云  实现添加
     connect(ui->btn_add,&QPushButton::clicked,[=](){
         //如果有赵云了,那就不添加
        bool isEmpty= ui->tableWidget->findItems("赵云",Qt::MatchExactly).isEmpty();//true
        if(!isEmpty)//false
        {
            QMessageBox::warning(this,"警告","已经有赵云,添加失败");
        }
        else{
            ui->tableWidget->insertRow(0);
            ui->tableWidget->setItem(0,0,new QTableWidgetItem(QString("赵云")));
            ui->tableWidget->setItem(0,1,new QTableWidgetItem(QString("男")));
            ui->tableWidget->setItem(0,2,new QTableWidgetItem(QString::number(30)));
        }
     });
     //点击删除赵云  实现删除
     connect(ui->btn_del,&QPushButton::clicked,[=](){
         //如果没赵云了,那就不删除
        bool isEmpty= ui->tableWidget->findItems("赵云",Qt::MatchExactly).isEmpty();
        if(isEmpty)
        {
            QMessageBox::warning(this,"警告","没有赵云,删除失败");
        }
        else{
           int rowNum= ui->tableWidget->findItems("赵云",Qt::MatchExactly).first()->row();//得到行号
            ui->tableWidget->removeRow(rowNum);
        }
     });

}
相关推荐
conkl6 分钟前
Apache网页优化实战指南 - 让网站加载速度提升
linux·运维·服务器·开发语言·阿里云·apache
onlooker666616 分钟前
Go语言底层(五): 深入浅出Go语言的ants协程池
开发语言·后端·golang
刚子编程18 分钟前
C# WinForms 实现打印监听组件
开发语言·c#·winform·打印监听组件
泽020228 分钟前
C++之模板进阶
开发语言·c++·算法
武子康33 分钟前
Java-46 深入浅出 Tomcat 核心架构 Catalina 容器全解析 启动流程 线程机制
java·开发语言·spring boot·后端·spring·架构·tomcat
时央1234562 小时前
C#使用Tuple方法实现OpreateResultModel功能
运维·开发语言·c#
爱学习的白杨树2 小时前
Spring Cloud Gateway 介绍
java·运维·开发语言
byte轻骑兵3 小时前
【C++特殊工具与技术】优化内存分配(五):显式析构函数的调用
开发语言·c++
黑听人3 小时前
【力扣 简单 C】141. 环形链表
c语言·开发语言·数据结构·算法·leetcode
Blossom.1184 小时前
基于深度学习的智能图像分类系统:从零开始构建
开发语言·人工智能·python·深度学习·神经网络·机器学习·分类