调整QTableWidget中单元格的高度和宽度以及加载图像

3

我想制作一个8*8的方格表格(棋盘),现在我有制作表格的代码,但是不知道如何调整单元格大小成正方形。

我还想将棋子图片放入单元格中。应该怎样做呢?

以下是我拥有的代码:

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QHBoxLayout>
#include <QTableWidget>

class Table : public QWidget
{
  public:
    Table(QWidget *parent = 0);

};


Table::Table(QWidget *parent)
    : QWidget(parent)
{
  QHBoxLayout *hbox = new QHBoxLayout(this);

  QTableWidget *table = new QTableWidget(8 , 8 , this);

  hbox->addWidget(table);
  setLayout(hbox);
}



int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Table t;

    t.show();


    return a.exec();
}

编辑:

如果有人能够帮助我将图片加载为单元格的背景,我会非常感激!我使用了这段代码,编译器没有生成错误,但程序无法运行。我认为问题出在 table->item(0,0) 上。我应该先初始化它吗?

QString fileName = "1.bmp";
QPixmap pic (fileName);

QIcon icon (pic);

table->item(0,0)->setIcon(icon);

有趣的方法来绘制棋盘 :) 不过我建议使用QGraphicsView。 - Frank Osterfeld
GraphicsView可能会增加更多的开销,但是可以无限地提高灵活性。它可以允许动画和其他有趣的东西。 - Casey
2个回答

7
为了使单元格成为正方形,可以像这样操作:
  // set the default size, here i've set it to 20px by 20x
  table->horizontalHeader()->setDefaultSectionSize(20);
  table->verticalHeader()->setDefaultSectionSize(20);
  // set the resize mode to fixed, so the user cannot change the height/width
  table->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
  table->verticalHeader()->setResizeMode(QHeaderView::Fixed);

编辑:要设置图片,请在您的QTableWidgetItem上设置icon属性。


1

在不停地搜索之后,我终于找到了答案。我应该先创建一个 QBrush 对象,并将其设置为 QtableWidgetItem 的背景,然后使用 table->setItem !!!

QString fileName = "/1.bmp";
QPixmap pic (fileName);

QBrush brush(pic);

QTableWidgetItem* item = new QTableWidgetItem();
item->setBackground(brush);

table->setItem(0,0,item);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接