Qt cpp 在QTableWidget单元格内居中显示 QPixmap
时间: 2024-03-12 07:50:18 浏览: 158
可以使用QTableWidgetItem来显示QPixmap,并通过setFlags()函数设置单元格内容居中显示。以下是示例代码:
```cpp
QPixmap pixmap("image.png");
QTableWidgetItem* item = new QTableWidgetItem();
item->setData(Qt::DecorationRole, pixmap);
item->setFlags(item->flags() ^ Qt::ItemIsEditable); // 禁止编辑
item->setTextAlignment(Qt::AlignCenter); // 内容居中显示
ui->tableWidget->setItem(row, column, item);
```
其中,row和column表示单元格的行和列。通过setData()函数设置QPixmap,并通过setTextAlignment()函数设置内容居中显示。setFlags()函数可以禁止单元格编辑。
相关问题
Qt cpp 在QTableWidget单元格内居中显示 QPixmap ,3种方式
好的,以下是三种在QTableWidget单元格内居中显示QPixmap的方式:
1. 使用QTableWidgetItem
可以使用QTableWidgetItem来显示QPixmap,并通过setFlags()函数设置单元格内容居中显示。示例代码如下:
```cpp
QPixmap pixmap("image.png");
QTableWidgetItem* item = new QTableWidgetItem();
item->setData(Qt::DecorationRole, pixmap);
item->setFlags(item->flags() ^ Qt::ItemIsEditable); // 禁止编辑
item->setTextAlignment(Qt::AlignCenter); // 内容居中显示
ui->tableWidget->setItem(row, column, item);
```
其中,row和column表示单元格的行和列。通过setData()函数设置QPixmap,并通过setTextAlignment()函数设置内容居中显示。setFlags()函数可以禁止单元格编辑。
2. 继承QStyledItemDelegate
可以通过继承QStyledItemDelegate,并在paint()函数中绘制QPixmap来实现单元格内居中显示QPixmap。示例代码如下:
```cpp
class ImageDelegate : public QStyledItemDelegate
{
public:
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
{
if (index.isValid() && index.data().canConvert<QPixmap>()) {
QPixmap pixmap = qvariant_cast<QPixmap>(index.data());
QRect rect = option.rect;
painter->drawPixmap(rect.x() + (rect.width() - pixmap.width()) / 2,
rect.y() + (rect.height() - pixmap.height()) / 2,
pixmap);
} else {
QStyledItemDelegate::paint(painter, option, index);
}
}
};
```
然后,在需要使用该委托的QTableWidget中设置委托,示例代码如下:
```cpp
ui->tableWidget->setItemDelegate(new ImageDelegate);
```
3. 使用QLabel
可以在单元格中使用QLabel来显示QPixmap,并设置QLabel的对齐方式来实现内容居中显示。示例代码如下:
```cpp
QPixmap pixmap("image.png");
QLabel* label = new QLabel;
label->setPixmap(pixmap);
label->setAlignment(Qt::AlignCenter); // 内容居中显示
ui->tableWidget->setCellWidget(row, column, label);
```
其中,row和column表示单元格的行和列。通过setPixmap()函数设置QPixmap,并通过setAlignment()函数设置内容居中显示。最后,使用setCellWidget()函数将QLabel放入单元格中。
QTableWidget单元格控件居中
你可以使用setItem方法将控件添加到单元格中,然后使用setCellWidget方法将其居中。
示例代码:
```python
# 创建一个QTableWidget对象
table = QTableWidget()
# 设置表格行数和列数
table.setRowCount(2)
table.setColumnCount(2)
# 创建一个QLineEdit对象
edit = QLineEdit("Hello, World")
# 将QLineEdit对象添加到第0行第0列的单元格中
table.setItem(0, 0, QTableWidgetItem())
table.setCellWidget(0, 0, edit)
# 设置该单元格中的控件居中
table.cellWidget(0, 0).setAlignment(Qt.AlignCenter)
```
在上面的代码中,我们创建了一个QTableWidget对象,并将其设置为两行两列。然后,我们创建了一个QLineEdit对象,并将其添加到第0行第0列的单元格中。最后,我们使用setAlignment方法将该单元格中的控件设置为居中对齐。
注意:如果你要添加的控件不是继承自QWidget类的话,无法使用setAlignment方法进行居中对齐。
阅读全文
相关推荐
















