在QTableView中将图标设置在图标下方而不是右侧?

时间:2013-11-29 15:28:48

标签: c++ qt qtableview

我正在将图片作为项目添加到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);
}

如果有任何方法可以将名称放在图标下方而不是图标的右侧,您能说我吗?

由于

1 个答案:

答案 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);

其余的将保持不变。