tableWidget里每个item加控件

    ui->tableWidget->setColumnCount(2);
    QStringList header;
    header << "name" <<"address";
    //ui->tableWidget->setColumnWidth(0,30);//设置列宽
    ui->tableWidget->setHorizontalHeaderLabels(header);
    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//单元格不可编辑
    ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section {border-color: gray;border-width:1px; border-style: solid; height:22px}");//表头加边框
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed);//设置内容排列方式
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
    ui->tableWidget->verticalHeader()->setVisible(false);//设置垂直表头不可见

    for(int i=0;i<4;i++)
    {
        int row = ui->tableWidget->rowCount();
        ui->tableWidget->insertRow(row);
        ui->tableWidget->setItem(row,0,new QTableWidgetItem(QString::number(i)));
        ui->tableWidget->item(row,0)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//设置内容居中

        QFrame *frame = new QFrame(ui->tableWidget);
        QPushButton *btn1 = new QPushButton(ui->tableWidget);
        btn1->setText("...");
        QLineEdit *lineEdit = new QLineEdit(ui->tableWidget);
        QHBoxLayout *hLayout = new QHBoxLayout(frame);
        hLayout->setMargin(0);
        hLayout->addWidget(lineEdit);
        hLayout->addWidget(btn1);
        ui->tableWidget->setCellWidget(row,1,frame);
    }

效果如下:
在这里插入图片描述
tips:
1.类似于listWidget,可以通过setData给每个item设值,也可以通过data取值,不过当item为控件时,不能通过setData设值,只能通过cellWidget得到该控件。
2.当程序报错Q_DECLARE_METATYPE时,一般是setData或者信号发送的数据类型得在头文件中用Q_DECLARE_METATYPE包一下。

Q_DECLARE_METATYPE(GsGeometryPtr)
Qt的`QTableWidget`控件提供了一个用于显示和编辑数据的表格视图,它继承自`QTableView`。对`QTableWidget`的数据进行排序通常涉及以下几个步骤: 1. 定义比较函数,用于确定排序的依据。 2. 调用`sortItems()`方法,指定列号和排序顺序。 以下是一个简单的示例,展示如何使用`QTableWidget`进行排序: ```cpp // 假设已经有一个名为tableWidgetQTableWidget实例 // 比较函数,用于确定排序规则 bool customSort(int row1, int row2, int column) { QVariant value1 = tableWidget->item(row1, column)->data(Qt::UserRole); QVariant value2 = tableWidget->item(row2, column)->data(Qt::UserRole); // 使用QVariant提供的比较方法,这假设存储的是整数 return value1.toInt() < value2.toInt(); } // 排序第0列,升序排序 tableWidget->sortItems(0, Qt::AscendingOrder); // 或者你可以使用自定义比较函数进行排序 tableWidget->sortItems(0, Qt::AscendingOrder, customSort); ``` 在上面的代码,`customSort`函数是一个自定义的比较函数,用于在排序时比较两个项目。`sortItems`方法用于根据指定的列和排序顺序进行排序。`Qt::AscendingOrder`表示升序排序,`Qt::DescendingOrder`表示降序排序。 注意:自定义比较函数`customSort`需要根据实际情况进行编写,上面的示例假设每一行的第`column`列存储的是整数值。如果存储的是字符串或其他类型的值,需要相应地修改比较逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vegetablesssss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值