簡単なチェスプログラムを作りたいです。これまで、QTableWidgetを使用してボードを作成し、テーブルのセルにピース画像をロードしました。ここで、信号とスロットを使用して、ユーザーがセルをクリックしてから別のセルをクリックすると、最初のセルの断片画像が2番目のセルに移動するようにしますが、その方法がわかりません。
これらの「駒の動き」が実際のチェスのルールに従わないようにすることに注意してください。私は2つのセル間で画像の置換を行うだけです。後で私は彼らに規則に従わせるでしょう。
これがコードです。このコードでは、テーブルのitem(0,0)のみに画像があります。誰かがコードを書く方法を言うことができますか?そのアイテムをクリックしてからitem(1,1)をクリックすると、画像「1.bmp」が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();
}