Problem wygląda następująco, chciałbym aby podczas kliknięcia danego przycisku została wywoływana funkcja i zostały przekazane do niej parametry. Kod wygląda następująco:
mainwindow.hpp:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QApplication>
#include <QPushButton>
#include <QLabel>
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QPushButton *przycisk1;
QLabel * etykieta1;
QPushButton * przycisk2;
public:
MainWindow();
public slots:
int foo(int a);
};
#endif // MAINWINDOW_H
main.cpp:
#include "mainwindow.hpp"
int main (int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
mainwindow.cpp:
#include "mainwindow.hpp"
MainWindow::MainWindow()
{
etykieta1 = new QLabel(tr("Czerwony"), this);
etykieta1->setGeometry(5, 5, 150, 30);
przycisk1 = new QPushButton(tr("&Nacisnij"), this);
przycisk1->setGeometry(5, 30, 100, 30);
przycisk2 = new QPushButton(tr("&Nacisnij"), this);
przycisk2->setGeometry(5, 160, 100, 30);
connect(przycisk1, SIGNAL(clicked()), this, SLOT(foo(1)));
connect(przycisk2, SIGNAL(clicked()), this, SLOT(foo(2)));
setMinimumSize(300, 300);
resize(480, 320);
}
int MainWindow :: foo(int a)
{
if(a==1)etykieta1->setText(tr("Zielony"));
if(a==2)etykieta1->setText(tr("Niebieski"));
}
Gdzie popełniam błąd? Dodam, że gdy do funkcji nie dodam żadnych parametrów program działa.