QT中结合实际例子谈谈QTableWidget中布局控件的方法

本文详细介绍了在QT中使用QTableWidget进行布局控件的实践,包括动态添加并居中显示控件、表头点击逆序排列、最后一列自适应大小、鼠标追踪改变行背景色、消除选中虚线框以及处理单元格点击事件等关键操作,附带了实际界面效果展示。
摘要由CSDN通过智能技术生成

每做一个控件,就会慢慢熟悉QT中的一个控件类,这次在用QTableWidget做一个标记点控件的时候,因为不熟悉有些东西花了大量的时间来查阅资料和学习,边学边做的确挺令人头疼的。

下面是用QtableWidget布局控件的一些点:

1. table中动态的添加控件,并使控件在单元格中居中显示。

2. 点击表头,让单元格中的控件逆序排列,以正行的形式排列。

3. 让单元格的最后一列自适应大小。

4. 单元格中追踪鼠标,让鼠标移到的那行改变背景色。

5.取消单元格中的选中虚线框。

6.单元格中的鼠标点击事件的处理等等。

........

    tableWidget->setColumnCount(3);
    QStringList header;
    header << tr("Marker") << tr("Description") << tr("");
    tableWidget->setHorizontalHeaderLabels(header);
  
QtQTableWidget,你可以使用`QAbstractItemModel`提供的迭代器如`QModelIndexIterator`来遍历表格的行和列,并在这个过程动态地插入控件。以下是基本步骤: 1. **获取模型迭代器**: 首先,你需要获得一个指向表格模型的数据模型,然后创建一个`QModelIndexIterator`,例如: ```cpp QModelIndex index = model.index(0, 0); // 指定初始索引位置 QItemSelectionModel selectionModel(&model); QModelIndexIterator it(selectionModel, index, Qt::ForwardIterator); ``` 2. **检查当前元素**: 在循环,检查迭代器是否还有下一个元素可用: ```cpp while (!it.atEnd()) { QModelIndex current = it.modelIndex(); // 当前单元格的索引 // ... } ``` 3. **插入控件**: 在找到合适的单元格位置时,你可以动态地创建并插入控件。比如添加一个按钮到单元格: ```cpp QPushButton *button = new QPushButton(QStringLiteral("Click Me")); QTableWidgetItem *item = new QTableWidgetItem(); item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); // 设置item属性 item->setSizeHint(button->sizeHint()); // 确保大小适配 model.setItem(current.row(), current.column(), item); // 将item添加到模型 QWidget *cellWidget = new QWidget; // 创建包含控件的小部件 cellWidget->layout()->addWidget(button); // 添加按钮到小部件布局 tableWidget.setCellWidget(current.row(), current.column(), cellWidget); // 显示在表格外 ``` 4. **更新视图**: 如果需要,可以调用`update()`函数让表格视图自动调整显示。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值