2010-07-08 4 views
1

Я хочу сделать таблицу 8 * 8 с квадратными ячейками (шахматная доска). Теперь у меня есть код для создания таблицы, но я не знаю, как изменить размер ячейки на квадратную форму.Изменение размера ячейки и Witdth и загрузка изображения в QTableWidget

Я также хочу поместить фотографии кусков в ячейки. Как мне это сделать?

здесь код у меня есть:

#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(); 
} 

EDIT:

Если кто-то может помочь мне с загрузкой изображения в качестве фона ячейки тоже, это было бы очень признателен! Я использую этот код, и компилятор не генерирует ошибку, но программа не запускается. Я думаю, проблема связана с table->item(0,0). Должен ли я сначала инициализировать его?

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

QIcon icon (pic); 

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

Интересный подход к рисованию шахматной доски :) Я бы предложил использовать QGraphicsView. –

+0

Действительно, GraphicsView будет более накладным, но будет бесконечно более гибким. Это позволит создавать анимации и другие интересные вещи. – Casey

ответ

4

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

// 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); 

Edit: Для установки изображения, установите атрибут значок на QTableWidgetItem s

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); 
Смежные вопросы