QT zmiana koloru przyisku po kliknięcu

0

Witam nigdy wcześniej nie programowałem graficznie a mam do zrobienia mały program w QT.
Chcę aby po kliknięciu w przycisk zmieniał się jego kolor na np czarny znalazłem takie coś:

button->setStyleSheet("* { background-color: rgb(255,125,100) }");

Jednak nie wiem jak zrobić żeby odbywało się to po kliknięciu.
Fragment programu:

QApplication app (argc, argv);
    QTextCodec::setCodecForCStrings (QTextCodec::codecForName ("Windows-1250"));
    QMainWindow window;
    window.setGeometry (150,150,700,800);
    window.setWindowTitle ("nana");

    square plansza[35][35];
    for(int i=0;i<35;i++)
    {
        for(int k=0;k<35;k++)
        {
            plansza[i][k].setParent(&window);
            plansza[i][k].setGeometry(i*20,(k+5)*20,20,20);
            //QObject::connect(&plansza[i][k],SIGNAL(clicked()),&plansza[i][k],SLOT ()); //tutaj nie wiem jak to zrobic
        }
    }

A i klasa sqare dziedziczy publicznie po QPushButton.

0

Tutorial o sygnałach czytałem jednak mimo to nie wiem jak użyć tej funkcji:
setStyleSheet("* { background-color: rgb(255,125,100) }");
aby wykonywała się ona po kliknięciu w przycisk. Czy ktoś mógłby ten fragment kodu napisać.

0

Coś źle kolega czytał o sygnałach skoro dalej nie wie jak to zrobić :) Stwórz sobie slot wrzuć do niego wszystko co chcesz aby się stało po kliknięciu buttona, i połącz connect'em z sygnałem buttona to wszystko.

0

Napisz sobie metodę wykonującą ten kod i wstaw ją w sekcji private slots klasy. Następnie nazwę tego slotu/metody wstaw do SLOT.

0

Już wiem o co chodziło, idiota ze mnie. Zamiast Q_OBJECT pisałem Q_Object. Teraz z tym nie ma problemu jednak gdy chce sobie zdefiniować jakis obiekt klasy square kompilator się burzy:

C:\Users\Olek\Desktop\sssssssssssssss/main.cpp undefined reference to `vtable for square

klasa wygląda tak:

class square:public QPushButton{
Q_OBJECT

public:
    square(QWidget* parent =0):QPushButton(parent){
    connect( this, SIGNAL( clicked() ), this, SLOT(colorchange())) ;
    };
private slots:
    void colorchange(){
    setStyleSheet("* { background-color: rgb(255,125,100) }") ;

    }

};

1 użytkowników online, w tym zalogowanych: 0, gości: 1