PDA

View Full Version : problem with replacing a background image using signal / slot



omid
9th July 2010, 14:06
Hi

i want to make a simple chess program. So far i've made the board using QTableWidget and loaded the piece pictures in the cells of table. Now i wnat to use signal and slot so that when user clicks a cell and then click another cell the piece picture from first cell goes to second cell, But I don't know how to do it.

Note that i don't want these "piece moves" obey the real chess rules. I only wnat to do the picture replacement between two cells . Later i will make them obey the rules.

here is the code. in this code only table's item(0,0) has a picture. can anyone say how to write a code so that when i click that item then click to item(1,1) , picture "1.bmp" goes to background of item(1,1)?


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

class Table : public QWidget
{
Q_OBJECT

public:
Table(QWidget *parent = 0);
slots:
//??????

};


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

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

table->setFixedSize(900,900);
table->horizontalHeader()->setDefaultSectionSize(100);
table->verticalHeader()->setDefaultSectionSize(100);

table->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
table->verticalHeader()->setResizeMode(QHeaderView::Fixed);

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

QBrush brush(pic);

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

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

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

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

Table table;

table.show();


return app.exec();
}

thanks