我想做一个简单的国际象棋程序。到目前为止,我已经使用 QTableWidget 制作了电路板并将图片加载到表格的单元格中。现在我想使用信号和插槽,这样当用户单击一个单元格然后单击另一个单元格时,第一个单元格的图片会转到第二个单元格,但我不知道该怎么做。
请注意,我不希望这些“棋子移动”遵守真正的国际象棋规则。我只需要在两个单元格之间进行图片替换。以后我会让他们遵守规则。
这是代码。在此代码中,只有表的 item(0,0) 有图片。谁能说如何编写代码,以便当我单击该项目然后单击项目(1,1)时,图片“1.bmp”进入项目(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();
}