当前位置: 首页 > news >正文

Day39 QTableWidget类的使用

1.简介

        介绍QtableWidget各种属性的用法,以及常用的一些信号,最后利用这些特性,制作一个用于下发设备运行参数的表格。该表格可以实现折叠和取消折叠,在源代码中用了事件过滤器实现,也可以用自带的click信号。显示了图标,添加了editline控件和combox控件;设置了简洁的样子,可以在自己工程中将其添加为c++类作为模块的一部分,或者添加为Qt界面师类,在主界面使用“提升为”完成界面类的实例化。

2.属性介绍

1.隐藏表头,由于表头是QheaderView类,同时在没有表头的情况下,可以用第一行和第一列作为表头,因此在相对简单的场合可以考虑隐藏。

QHeaderView *horizontalHeader = ui->tableWidget->horizontalHeader();
horizontalHeader->setVisible(false);
QHeaderView *verticalHeader = ui->tableWidget->verticalHeader();
verticalHeader->setVisible(false);

2.表格框线的样式

    ui->tableWidget->setStyleSheet("QTableWidget{ gridline-color:black;border: 1px solid black; }");
    ui->tableWidget->setFrameShape(QFrame::Box);//设置外边框
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//宽度自适应(父对象)
    ui->tableWidget->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);// 设置水平和垂直方向的拉伸因子

3.创建表格

 ui->tableWidget->setColumnCount(2);
 ui->tableWidget->setRowCount(15);

4.设置表格字体属性

    QFont font;
    font.setFamily("Arial");
    font.setPointSize(10);
    QPalette palette;
    palette.setColor(QPalette::Text, QColor(Qt::black));

5.设置内容,居中属性

ui->tableWidget->setItem(0, 0, new QTableWidgetItem("属性"));
ui->tableWidget->item(0,1)->setTextAlignment(Qt::AlignCenter);

6.设置背景色,选中属性

    ui->tableWidget->setItem(11, 0, new QTableWidgetItem(u8"上端位置"));
    ui->tableWidget->setItem(11, 1, new QTableWidgetItem(""));
    ui->tableWidget->item(11,1)->setFlags(Qt::ItemIsEditable|Qt::ItemIsEnabled);

7.设置combox控件

    comboMode = new QComboBox(ui->tableWidget);
    comboMode->addItem(u8"模式1");
    comboMode->addItem(u8"模式2");
    comboMode->addItem(u8"模式3");
    comboMode->setCurrentIndex(0);
    connect(comboMode, &QComboBox::currentTextChanged, [=](const QString& text){
        if(text == "模式1" || text == "模式2"){
            ui->tableWidget->item(9,1)->setText("");
            ui->tableWidget->item(9,1)->setFlags(Qt::NoItemFlags);
        }
        else{
            ui->tableWidget->item(9,1)->setFlags(Qt::ItemIsEnabled|Qt::ItemIsEditable);
        }
    });

8.设置lineedit、label的控件作为表格内容

    QWidget* wCell0 = new QWidget(ui->tableWidget);
    QHBoxLayout* subExposeLayout = new QHBoxLayout(wCell0);
    edit1 = new QLineEdit(wCell0);
    QLabel* lab1  = new QLabel(wCell0);
    edit1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//填充整个空间
    wCell0->setStyleSheet("QLineEdit { background:transparent ;border: none; }");
    subExposeLayout->addWidget(edit1, 2);
    subExposeLayout->addWidget(lab1, 1);
    lab1->setText("us");
    subExposeLayout->setMargin(0);
    subExposeLayout->setSpacing(0);
    ui->tableWidget->setCellWidget(7, 1, wCell0);

9.添加图标

ui->tableWidget->item(1,0)->setIcon(QIcon(":/res/pullDown.jpg"));

3.常见信号

Cell开头的信号携带的参数是行x列,Item开头的信号携带的参数是item,每一项,各信号的名字也都可顾名思义,在源代码中,使用事件过滤器实现鼠标的单击事件,没有用自带的click信号。生成的界面效果如图:

相关文章:

  • 基于EPICS stream模块的直流电源的IOC控制程序实例
  • Vue使用epubjs电子书
  • docker部署elk
  • Node.js 中解析 HTML 的方法介绍
  • 月报总结|Moonbeam 10月份大事一览
  • 网际控制报文协议ICMP
  • Spring Boot整合Swagger
  • 【SOC基础】单片机学习案例汇总 Part2:蜂鸣器、数码管显示
  • 【C++心愿便利店】No.11---C++之string语法指南
  • Vscode LinuxC++环境配置
  • ElasticSearch集群架构实战及其原理剖析
  • 好物周刊#29:项目管理软件
  • 概念解析 | Retinex理论
  • 玩了一下 Jenkins,最新版本 + JDK11
  • 项目实战:分页功能实战
  • Java 正则表达式数字篇
  • 1047. 删除字符串中的所有相邻重复项
  • 线性代数 第二章 矩阵
  • MyBatis 动态 SQL
  • 数据结构——基于顺序表实现通讯录
  • 连续两个交易日涨停,华夏幸福:生产经营活动正常,不存在影响股价波动的重大事宜
  • 以色列媒体:以总理称将接管整个加沙
  • 谷神星一号海射型遥五运载火箭发射成功
  • 巴基斯坦外长访华是否与印巴局势有关?外交部:此访体现巴方高度重视中巴关系
  • 中国田径巡回赛西安站完赛:男子跳远石雨豪夺冠,女子跳高刘肼毅折桂
  • 《掩耳盗邻》:富人劫富,是犯罪,也是赎罪?