我正在将图片作为项目添加到QTableView,我还在为每个图片添加特定文本,问题是文本显示在图片或图标旁边,但我希望QTableView在图片下方显示或图标。我的代码段如下:
QStandardItemModel * model = new QStandardItemModel(NumOfRow, 3, this);
然后是这个循环中的部分
//
QStandardItem * itm = new QStandardItem;
itm->setIcon(image);
itm->setText(text);
model->setItem(row, column, itm);
//
然后这部分在循环之外
ui->listOfImages->setModel(model);
ui->listOfImages->setStyleSheet(QString("icon-size: 150px 150px"));
ui->listOfImages->verticalHeader()->setVisible(false);
ui->listOfImages->horizontalHeader()->setVisible(false);
for(int i=0; i<=rowPointer; i++)
{
ui->listOfImages->setRowHeight(i,150);
}
for(int j=0; j<3; j++)
{
ui->listOfImages->setColumnWidth(j,150);
}
如果有任何方法可以将名称放在图标下方而不是图标的右侧,您能说我吗?
由于
答案 0 :(得分:0)
好吧,我会尝试使用自定义QStandardItemModel
子类处理文本对齐。以下是实现它的示例模型:
class ItemModel : public QStandardItemModel
{
public:
ItemModel(int rows, int columns, QObject *parent = 0)
:
QStandardItemModel(rows, columns, parent)
{}
QVariant data(const QModelIndex &index, int role) const
{
if (role == Qt::TextAlignmentRole) {
return Qt::AlignBottom; // <- Make alignment look different, i.e.
// <- text at the bottom.
} else {
return QStandardItemModel::data(index, role);
}
}
};
因此,您需要创建此自定义类的实例,而不是使用Qt类:
QStandardItemModel * model = new ItemModel(NumOfRow, 3, this);
其余的将保持不变。