-1
,當我有一個項目,其中我試圖單擊時將圖像添加到QLabel將圖片添加到一個QLabel。我閱讀了一些關於如何製作可點擊QLabel的文章,但添加圖片似乎很棘手。任何方式做到這一點?點擊
編輯1-
我想提出一個簡單的井字遊戲QT。所以我做了9個QLabels的網格佈局。我想在單擊時將圖像添加到相應的QLabel(O或X)。 我做了一個2D陣列來檢查獲勝狀態。 這裏是mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
//QPixmap imageO("C:/Users/user/Documents/tictactoe/o.png");
//QPixmap imageX("C:/Users/user/Documents/tictactoe/x.png");
char a[3][3],turn_player='O';
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
int i,j;
ui->setupUi(this);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
a[i][j]='-';
}
centralWidget = new QWidget(this);
ui->setupUi(this);
windowstart();
this->setCentralWidget(centralWidget);
grid = new QGridLayout(centralWidget);
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
labels[i][j]= new ClickableLabel("",this);
grid->addWidget(labels[i][j], i+1, j);
labels[i][j]->setAlignment(Qt::AlignCenter);
looks(i,j);
}
}
play();
}
void MainWindow::windowstart()
{
setWindowTitle("TIC-TAC-TOE");
setFixedSize(500,500);
QPixmap bkgnd("C:/Users/user/Documents/tictactoe/background.jpg");
bkgnd = bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio);
QPalette palette;
palette.setBrush(QPalette::Background, bkgnd);
this->setPalette(palette);
}
void MainWindow::looks(int i,int j)
{
labels[i][j]->setStyleSheet("QLabel { background-color: #000000; color: white; font:20pt; font-weight:500; border-radius: 10px;}");
}
void MainWindow::play()
{
//int count=0;
for(; ;)
{
move_Player('O');
count++;
if(woncheck('O')==true)
{
QMessageBox::information(this,tr("Game Over"),tr("Player A(O) won."));
break;
}
if(count==9)
{
QMessageBox::information(this,tr("Game Over"),tr("Player A(O) won."));
break;
}
move_Player('X');
count++;
if(woncheck('X')==true)
{
QMessageBox::information(this,tr("Game Over"),tr("Player B(X) won."));
break;
}
}
}
void MainWindow::move_Player(char ch)
{
if(ch=='O')
//set picture of O
else
//set picture of X
}
bool MainWindow::woncheck (char test)
{
int i,j,counter1,counter2,counter3,counter4;
for(i=0;i<3;i+=1)
{
counter1=0;counter2=0;counter3=0,counter4=0;
for(j=0;j<3;j+=1)
{
if(a[i][j]==test)
counter1++;
if(a[j][i]==test)
counter2++;
if(a[j][j]==test)
counter3++;
if(a[j][4-j]==test)
counter4++;
}
if(counter1==3||counter2==3||counter3==3||counter4==3)
return true;
}
return false;
}
MainWindow::~MainWindow()
{
delete ui;
}
的代碼我有一個類ClickableLabel爲好,這從QLabel繼承併發射所點擊的信號,僅此而已。當QLabel被點擊到ClickableLabel類中時,我還想添加添加圖像的函數,但無法確定如何實際執行此操作。
我與呼叫使用下面的回答,但你的問題是短暫的詳細信息。什麼似乎是棘手的呢? – goug