Изменение размера ячейки и Witdth и загрузка изображения в QTableWidget - PullRequest
2 голосов
/ 08 июля 2010

Я хочу сделать стол 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);

Ответы [ 2 ]

5 голосов
/ 08 июля 2010

Чтобы сделать квадратные ячейки, сделайте что-то вроде этого:

  // 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 s

1 голос
/ 09 июля 2010

после поиска и поиска и поиска .... Я наконец получил ответ.Сначала я должен создать объект 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);
...