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);
        }
     });

}
相关推荐
weixin_4723394624 分钟前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
枯萎穿心攻击1 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
Eiceblue2 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
m0_555762903 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
浪裡遊4 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
lzb_kkk5 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼5 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
简佐义的博客5 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
程序员爱钓鱼6 小时前
【无标题】Go语言中的反射机制 — 元编程技巧与注意事项
开发语言·qt