Widnmax J
Widnmax J

Reputation: 39

QT how to add action to button

I am quite new to QT and after reading the documentation I still can't get a button call method from the same class. Could anyone help or point out where I am wrong?

    #include "GUI.h"
    GUI::GUI() {
    window = new QWidget();
    QGridLayout * layout = new QGridLayout;

    //Sukuriami procesų label'iai

    QLabel * startStopLabel = new QLabel("Start_Stop");
    QLabel * readUILabel = new QLabel("ReadUI");
    QLabel * jclLabel = new QLabel("JCL");
    QLabel * dataToOutputLabel = new QLabel("DataToOutput");
    QLabel * inputToRamLabel = new QLabel("InputToRam");
      QLabel * mainProcLabel = new QLabel("MainProc");
      QLabel * jobGovernorLabel = new QLabel("JobGovernor");
      QLabel * loaderLabel = new QLabel("Loader");
     QLabel * virtualMachineLabel = new QLabel("VirtualMachine");
      QLabel * interruptLabel = new QLabel("Interrupt");
      QLabel * printErrorLabel = new QLabel("PrintError");

      //Sukuriami procesų laukai duomenų išvedimui

      startStop = new QTextBrowser();
      readUI = new QTextBrowser();
      jcl = new QTextBrowser();
      dataToOutput = new QTextBrowser();  
      inputToRam = new QTextBrowser();
      mainProc = new QTextBrowser();
      jobGovernor = new QTextBrowser();
      loader = new QTextBrowser();
      virtualMachine = new QTextBrowser();
      interrupt = new QTextBrowser();
      printError = new QTextBrowser();


      forward = new QPushButton();
      addAction();
         connect(forward, SIGNAL(clicked()), this , SLOT(addText()));
     // QPushButton * newJob = new QPushButton();
     // QPushButton * cancel = new QPushButton();

     // QAction * action;
          QMainWindow * window2 = new QMainWindow();




      //layout tvarkymas

      layout->addWidget(startStopLabel, 0, 0, Qt::AlignHCenter);
      layout->addWidget(readUILabel, 0, 1, Qt::AlignHCenter);
      layout->addWidget(jclLabel, 0, 2, Qt::AlignHCenter);
      layout->addWidget(dataToOutputLabel, 0, 3, Qt::AlignHCenter);
      layout->addWidget(startStop, 1, 0);
      layout->addWidget(readUI, 1, 1);
      layout->addWidget(jcl, 1, 2);
      layout->addWidget(dataToOutput, 1, 3);
      layout->addWidget(inputToRamLabel, 2, 0, Qt::AlignHCenter);
     layout->addWidget(mainProcLabel, 2, 1, Qt::AlignHCenter);
      layout->addWidget(jobGovernorLabel, 2, 2, Qt::AlignHCenter);
      layout->addWidget(loaderLabel, 2, 3, Qt::AlignHCenter);
      layout->addWidget(inputToRam, 3, 0);
      layout->addWidget(mainProc, 3, 1);
      layout->addWidget(jobGovernor, 3, 2);
      layout->addWidget(loader, 3, 3);
      layout->addWidget(virtualMachineLabel, 4, 0, Qt::AlignHCenter);
      layout->addWidget(interruptLabel, 4, 1, Qt::AlignHCenter);
      layout->addWidget(printErrorLabel, 4, 2, Qt::AlignHCenter);
      layout->addWidget(virtualMachine, 5, 0);
      layout->addWidget(interrupt, 5, 1);
      layout->addWidget(printError, 5, 2);
      layout->addWidget(forward, 5, 3);


      window->setLayout(layout);
      window->setWindowState(Qt::WindowMaximized);
      window->setWindowTitle("AutoMagic");
      window->setWindowIcon(QIcon("kiriya.jpg"));

     window->show();
    }

    GUI::~GUI() {
    }

    void GUI::addText(){

        startStop->append("works");
        window->repaint();
    } 

and gui.h

    class GUI: public QMainWindow {

        Q_OBJECT

      QWidget * window;  
      QTextBrowser * startStop;
      QTextBrowser * readUI;
      QTextBrowser * jcl;
      QTextBrowser * dataToOutput;  
      QTextBrowser * inputToRam;
      QTextBrowser * mainProc;
      QTextBrowser * jobGovernor;
      QTextBrowser * loader;
      QTextBrowser * virtualMachine;
     QTextBrowser * interrupt;
     QTextBrowser * printError;
     QPushButton * forward;

    public:
        GUI();
        virtual ~GUI();
        void addText();
        void addAction();
    private:

    }; 

I would be grateful if anyone could help me understand this part.

Upvotes: 3

Views: 20643

Answers (3)

Tcz
Tcz

Reputation: 701

You have to fully understand signals and slots (they are used for communication between objects). This mechanism is a central feature of Qt and probably the part that differs most from the features provided by other frameworks.

Read this article that explain their basics:

http://qt-project.org/doc/qt-4.8/signalsandslots.html

Upvotes: 3

Barış Akkurt
Barış Akkurt

Reputation: 2256

connect ( ui->pushButton, SIGNAL( clicked() ), this, SLOT( pushButtonClicked() ) );

pushButtonClicked() is function you defined.

Upvotes: 2

Martin Beckett
Martin Beckett

Reputation: 96119

You need to understand Qr's signal and slot mechanism. The easiest place to start is one of the example programs that come with Qt.

Like any event driven gui program it seems complex at first, but it is probably one of the simplest mechanisms to actually work with

Upvotes: 1

Related Questions