2016-06-12 3 views
-1

내가체크 박스

은 다음과 같습니다 C++ 및 QT (초급 수준)를 연습 할 수있는 응용 프로그램 제작 (문자열 + 사용자 정의 아이콘을 표시 추가) : (! 마작 테마) enter image description here

Atm,이 모든 것입니다 : http://imgur.com/cnXfWZh

아주 간단하지만 몇 가지 기능을 추가하고 싶습니다.

문제는, 그것들을 추가하는 것이 어렵다고 생각하지 않는다는 것입니다 (적어도 저에게는).

  • 만 "플레이어 1"체크 박스에 체크하여 "플레이어 1"확인란은 GIF에서 볼 수있는 조치는 허용되어야한다. (지금은 항상 허용되며 상자에 체크 할 필요가 없음)

  • 그 상자가 체크되어있는 동안 각 타일이 클릭 된 순서대로 같은 타일 아이콘을 "graphicsView"영역에 추가해야합니다 "textedit box 1"내부의 출력에서 ​​볼 수 있습니다.

    (13 개) 타일의 최대는 "텍스트 편집기"상자 "graphicsView"영역

    에서 허용되어야한다

  • (이미 지금 노력하고 있습니다 "텍스트 편집기 상자 1"의 문자열 APPEND 기능의 상단에)

과 같이 : http://imgur.com/SUWHJSK

나는 "벽"확인란이 나중에 무엇을해야하는지 절약하고 :)

내 코드는 아마 재앙, 미안. < - 여전히 매우 초보자 그러나 여기 간다 :

.PRO 파일 :

QT  += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = HandBuilder_Mahjong 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

RESOURCES += \ 
    tiles.qrc 

mainwindow.h :

private slots: 
    void addTextToLabel(); 
    void addTextToLabel2(); 
    void addTextToLabel3(); 
    void addTextToLabel4(); 
    void addTextToLabel5(); 
    void addTextToLabel6(); 
    void addTextToLabel7(); 
    void addTextToLabel8(); 
    void addTextToLabel9(); 
    void addTextToLabel10(); 
    void addTextToLabel11(); 
    void addTextToLabel12(); 
    void addTextToLabel13(); 
    void addTextToLabel14(); 
    void addTextToLabel15(); 
    void addTextToLabel16(); 
    void addTextToLabel17(); 
    void addTextToLabel18(); 
    void addTextToLabel19(); 
    void addTextToLabel20(); 
    void addTextToLabel21(); 
    void addTextToLabel22(); 
    void addTextToLabel23(); 
    void addTextToLabel24(); 
    void addTextToLabel25(); 
    void addTextToLabel26(); 
    void addTextToLabel27(); 

    void addTextToLabel28(); 
    void addTextToLabel29(); 
    void addTextToLabel30(); 
    void addTextToLabel31(); 
    void addTextToLabel32(); 
    void addTextToLabel33(); 
    void addTextToLabel34(); 





private: 
    Ui::MainWindow *ui; 
}; 

#endif // MAINWINDOW_H 

MAIN.CPP :

#include "mainwindow.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

mainwindow.cpp :

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    connect(ui->Bamboo_1, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel())); 
    connect(ui->Bamboo_2, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel2())); 
    connect(ui->Bamboo_3, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel3())); 
    connect(ui->Bamboo_4, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel4())); 
    connect(ui->Bamboo_5, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel5())); 
    connect(ui->Bamboo_6, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel6())); 
    connect(ui->Bamboo_7, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel7())); 
    connect(ui->Bamboo_8, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel8())); 
    connect(ui->Bamboo_9, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel9())); 

    connect(ui->Man_1, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel10())); 
    connect(ui->Man_2, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel11())); 
    connect(ui->Man_3, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel12())); 
    connect(ui->Man_4, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel13())); 
    connect(ui->Man_5, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel14())); 
    connect(ui->Man_6, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel15())); 
    connect(ui->Man_7, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel16())); 
    connect(ui->Man_8, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel17())); 
    connect(ui->Man_9, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel18())); 

    connect(ui->Pin_1, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel19())); 
    connect(ui->Pin_2, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel20())); 
    connect(ui->Pin_3, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel21())); 
    connect(ui->Pin_4, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel22())); 
    connect(ui->Pin_5, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel23())); 
    connect(ui->Pin_6, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel24())); 
    connect(ui->Pin_7, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel25())); 
    connect(ui->Pin_8, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel26())); 
    connect(ui->Pin_9, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel27())); 

    connect(ui->Wind_East, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel28())); 
    connect(ui->Wind_North, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel29())); 
    connect(ui->Wind_South, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel30())); 
    connect(ui->Wind_West, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel31())); 
    connect(ui->Dragon_Red, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel32())); 
    connect(ui->Dragon_Green, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel33())); 
    connect(ui->Dragon_White, SIGNAL(clicked(bool)), this, SLOT(addTextToLabel34())); 


} 



//Bamboo tiles 

void MainWindow::addTextToLabel() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b1"); 
} 

void MainWindow::addTextToLabel2() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b2"); 
} 

void MainWindow::addTextToLabel3() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b3"); 
} 

void MainWindow::addTextToLabel4() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b4"); 
} 

void MainWindow::addTextToLabel5() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b5"); 
} 

void MainWindow::addTextToLabel6() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b6"); 
} 

void MainWindow::addTextToLabel7() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b7"); 
} 

void MainWindow::addTextToLabel8() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b8"); 
} 

void MainWindow::addTextToLabel9() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";b9"); 
} 

//Man tiles 

void MainWindow::addTextToLabel10() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n1"); 
} 

void MainWindow::addTextToLabel11() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n2"); 
} 

void MainWindow::addTextToLabel12() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n3"); 
} 

void MainWindow::addTextToLabel13() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n4"); 
} 

void MainWindow::addTextToLabel14() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n5"); 
} 

void MainWindow::addTextToLabel15() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n6"); 
} 

void MainWindow::addTextToLabel16() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n7"); 
} 

void MainWindow::addTextToLabel17() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n8"); 
} 

void MainWindow::addTextToLabel18() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n9"); 
} 


// Pin tiles 
void MainWindow::addTextToLabel19() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p1"); 
} 

void MainWindow::addTextToLabel20() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p2"); 
} 

void MainWindow::addTextToLabel21() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p3"); 
} 

void MainWindow::addTextToLabel22() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p4"); 
} 

void MainWindow::addTextToLabel23() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p5"); 
} 

void MainWindow::addTextToLabel24() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p6"); 
} 

void MainWindow::addTextToLabel25() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p7"); 
} 

void MainWindow::addTextToLabel26() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p8"); 
} 

void MainWindow::addTextToLabel27() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";p9"); 
} 



//Wind tiles 
void MainWindow::addTextToLabel28() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";e"); 
} 

void MainWindow::addTextToLabel29() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";n"); 
} 

void MainWindow::addTextToLabel30() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";s"); 
} 

void MainWindow::addTextToLabel31() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";w"); 
} 




//Dragon tiles 
void MainWindow::addTextToLabel32() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";rd"); 
} 

void MainWindow::addTextToLabel33() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";gd"); 
} 

void MainWindow::addTextToLabel34() 
{ 
    ui->textEdit->setText(ui->textEdit->toPlainText() + ";wd"); 
} 



MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

는 정말 사랑하고 설명에 모든 물건 아니더라도, 어떤 도움을 주셔서 감사합니다 것입니다.

그냥 기본 않도록

답변

1

그럼 내가 그 체크 및 체크되지 않은 상태입니다, 당신의 체크 박스에 대한 신호/슬롯 연결이 표시되지 않습니다 (희망 너무 많이 요구하고 있지 않다).당신은 텍스트 편집기로 체크 박스를 연결하려면,

connect(ui->player1_checkbox, SIGNAL(stateChanged(int)), this, SLOT(toggleTextEdit())); 

그리고 toggleTextEdit은()

void MainWindow::toggleTextEdit() 
     { 
     if(ui->player1_checkbox->isChecked()) 
      ui->textEdit->setEnabled(true); 
     else 
      ui->textEdit->setEnabled(false); 
     } 

수 그리고 graphicsview를 들어, 크기 13의 배열을 생성해야하고 업데이트 할 수 있습니다 고려 배열이 언제든지 마우스 초점 아래에있는 버튼을 변경,

array[counter%13] = currentButtonNumber; 
counter = counter+1; 

유사한 방식으로 배열 콘텐츠 업데이트 그런 다음 아이콘 배열에 해당하여 graphicsview를 업데이트 할 수 있습니다 요소. 변수 counter는 클릭 한 버튼을 추적하고 13 번째 클릭마다 0부터 시작하여 그에 따라 배열을 업데이트하기위한 것입니다. 희망이 있습니다.

+0

이것은 도움이됩니다. 나는 그것을 한 번 시도해보고 그래픽보기 업데이트를 살펴볼 것입니다. – Shamon

관련 문제