复选框切换QPushbutton函数(追加字符串+显示自定义图标)

时间:2016-06-12 02:31:02

标签: c++ qt

我制作了一个应用程序来练习c ++和qt(初级水平)

看起来像这样: (麻将主题!) enter image description here

Atm,它所做的就是: http://imgur.com/cnXfWZh

非常简单,但我想添加一些功能。

问题是,我不认为添加它们会那么困难(至少对我而言)。

"玩家1"复选框

  • 只需勾选"播放器1"复选框应该允许在gif中看到的操作。 (现在总是允许的;不需要勾选方框)

  • 勾选该框时,还应将每个图块图标添加到" graphicsView"区域,在单击每个图块时,按照输出内部的相同顺序" textEdit框1"。

    (" textEdit框1"的字符串附加功能之上,现在已经可以使用了)

  • " textEdit"最多允许13个图块。框和" graphicsView"区域

像这样:http://imgur.com/SUWHJSK

我正在拯救" Wall"复选框应该在以后执行:)

我的代码可能是灾难性的,抱歉。 < - 仍然非常初学者但是这里:

.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 个答案:

答案 0 :(得分:1)

我没有看到您的复选框的任何信号/插槽连接,因此它只是默认状态,即已选中和未选中状态。如果要将复选框链接到textedit,请考虑

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);
        }

对于图形视图,您可能必须创建一个大小为13的数组,并在您更改鼠标焦点下的按钮时更新数组,数组内容以类似于

的方式更新
array[counter%13] = currentButtonNumber;
counter = counter+1;

然后,您可以使用与数组元素对应的图标更新图形视图。变量counter用于跟踪单击的按钮并相应地更新数组,每次第13次点击从0开始。     希望这有效。