【Qt之·类QTableWidget】

系列文章目录



前言


一、常用属性

二、成员函数

方法描述
selectRow选中行
removeRow移除行
insertRow插入行
rowCount总行数

2.1 左上角空白区域

QTableCornerButton即不属于列表头,也不属于行表头。

方法描述
setCornerButtonEnabled()设置是否启用这个按钮,如果值为false则不能被点击
setCornerWidget()给这个按钮设置其它QWidget类型的对象
cornerWidget()获取这个按钮所包含的QWidget对象

三、实例演示

示例1:

    QStringList list;
    list << "IO0" << "IO1" << "IO2" << "IO3" << "IO4" << "IO5" << "IO6" << "IO7"\
         << "IO8" << "IO9" << "IO10" << "IO11" << "IO12" << "IO13" << "IO14" << "IO15";

    ui->tableWidget->setColumnCount(list.size());
    ui->tableWidget->setHorizontalHeaderLabels(list);
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

    list.clear();
    list << "INPUT" << "OUTPUT";

    ui->tableWidget->setRowCount(list.size());
    ui->tableWidget->setVerticalHeaderLabels(list);
    ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);

    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
    ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
    ui->tableWidget->setFocusPolicy(Qt::NoFocus);

    QLabel *lable = new QLabel[32]();
    QHBoxLayout *HLayout = new QHBoxLayout[32]();
    QWidget *widget = new QWidget[32]();

    int n = 0;
    for (int j = 0;j < 2;j++) {
        for (int i = 0;i < 16;i++) {
            (&lable[n])->setFixedSize(40,40);
            (&lable[n])->setAlignment(Qt::AlignCenter);
            lable[n].setPixmap(QPixmap(":/image/red.png"));
            lable[n].setScaledContents(true);

            HLayout->setContentsMargins(0,0,0,0);
            HLayout[n].addWidget(&lable[n],Qt::AlignCenter);
            widget[n].setLayout(&HLayout[n]);

            ui->tableWidget->setMinimumWidth(1050);
            ui->tableWidget->setCellWidget(j,i,&widget[n]);
            n++;
        }
    }

运行结果
在这里插入图片描述
示例2:

QStringList list;
    list << "X" << "Y" << "Z" << "XX";

    ui->tableWidget->setColumnCount(list.size());
    ui->tableWidget->setHorizontalHeaderLabels(list);
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

    ui->tableWidget->setRowCount(10);
    ui->tableWidget->setFocusPolicy(Qt::NoFocus);                           // 取消Item选中后的虚线边框
    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);    // 设置不可编辑
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);   // 设置选中一整行
    ui->tableWidget->setSelectionMode (QAbstractItemView::SingleSelection); // 只允许选中单行
    ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);    // 隐藏垂直滑动条

//    qDebug() << ui->tableWidget->children();
//    qDebug() << "----------------------";
//    qDebug() << ui->tableWidget->children().at(6);

    QWidget *w = static_cast<QWidget *>(ui->tableWidget->children().at(6));  //使用一个QWidget对象来承载QTableCornerButton对象
    QHBoxLayout *HLayout1 = new QHBoxLayout(w);                              //创建一个水平布局器,并绑定到w
    HLayout1->setMargin(0);                                                  //设置布局器边界为0,否则会影响后面组件的显示
    QLabel *lable = new QLabel(QString::fromLocal8Bit("序号"));              //创建一个文本标签,打上想要显示的文本
    lable->setAlignment(Qt::AlignCenter);                                   //设置文本为居中显示
    HLayout1->addWidget(lable);                                             //把文本标签添加到布局器

运行结果:
在这里插入图片描述


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值