我想製作一個簡單的國際象棋程序。到目前爲止,我已經使用QTableWidget製作了該板,並將這些圖片加載到了表格的單元格中。現在我想使用信號和插槽,以便當用戶單擊一個單元格,然後單擊另一個單元格時,第一個單元格的圖片將轉到第二個單元格,但是我不知道該怎麼做。使用qt中的信號/插槽替換背景圖像的問題
請注意,我不希望這些「棋子」服從真正的國際象棋規則。我只想做兩個單元格之間的圖片替換。後來我會讓他們遵守規則。
這裏是代碼。在這個代碼中只有表格的項目(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();
}
感謝您的幫助。是的,我用cellClicked做了它,它工作! 非常感謝。 – Omid 2010-07-10 06:28:01