Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » KDevelop / Qt / wxWidget » Slots signals funtzt net(qt)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.05.2006, 16:51 Uhr
Karldin Shinowa
Professional Noob


also mag ein programm dass 2 buttons:- & + hat und man damit nen lcd steuern kann


C++:
//LCD.h die Klasse des lcds

#include<QWidget>

class QLCDNumber;

class LCD:public QWidget
{
   Q_OBJECT
  
   public:
      LCD(QWidget*parent=0);
  
   private:
      int value;
      QLCDNumber*lcd;

   public slots:
      void incrementValue();
      void decrementValue();
};




C++:
//LCD.cpp die definitionen
#include"LCD.h"
#include<QLCDNumber>
#include <QVBoxLayout>

LCD::LCD(QWidget*parent)
   :QWidget(parent)
{
   lcd=new QLCDNumber(2);
   lcd->setSegmentStyle(QLCDNumber::Filled);

   connect(this,SIGNAL(incrementValue()),lcd,SLOT(display(value)));
   connect(this,SIGNAL(decrementValue()),lcd,SLOT(display(value)));
  
   QVBoxLayout*layout=new QVBoxLayout;
   layout->addWidget(lcd);
   setLayout(layout);
}

void LCD::incrementValue()
{
   ++value;
   if(value>99) value=99;
}

void LCD::decrementValue()
{
   --value;
   if(value<0) value=0;
}




C++:
//main.cpp
#include<QApplication>
#include<QPushButton>
#include<QFont>
#include<QGridLayout>
#include<QVBoxLayout>
#include"LCD.h"

class MyWidget:public QWidget
{
   public:
      MyWidget(QWidget*parent=0);
  
   private:
      QPushButton*plus;
      QPushButton*minus;
      LCD*lcd;
      
};

MyWidget::MyWidget(QWidget*parent)
{
   plus=new QPushButton("+");
   minus=new QPushButton("-");

   lcd=new LCD;

   connect(plus,SIGNAL(clicked()),
           lcd, SLOT(incrementValue()));
  
   connect(minus,SIGNAL(clicked()),
           lcd,  SLOT(decrementValue()));

   QGridLayout*grid=new QGridLayout;
   grid->addWidget(minus,0,0);
   grid->addWidget(plus,0,1);

   QVBoxLayout*layout=new QVBoxLayout;

   layout->addLayout(grid);
   layout->addWidget(lcd);
   setLayout(layout);
}


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    MyWidget window;
    window.show();

    return app.exec();
}



Er zeigt jetzt alles an aber wenn ich auf die buttons gehe verändert sich nix...
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 12.05.2006 um 16:53 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.05.2006, 12:25 Uhr
stephanw
localhorst


Ich kenne grad QLCDNumber nicht genau und weiß daher nicht, was displayValue() genau macht (repaint() ? ).

Aber
Zitat von Verfasser:

connect(this,SIGNAL(incrementValue()),lcd,SLOT(display(value)));
connect(this,SIGNAL(decrementValue()),lcd,SLOT(display(value)));


kann nicht gehen, weil increment/decrementValue() keine Signals sind, sondern Slots. Wenn Du von diesen Funktionen aus am QLCDNumber etwas auslösen willst, dann musst Du mit "emit yourCustomSignal();" ein Signal senden und dieses mit dem Slot am QLCDN verbinden. Oder Du rufst direkt display( value ) auf, ist eine normale Funktion !

Grüße
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.05.2006, 21:20 Uhr
Karldin Shinowa
Professional Noob


hab das prob schon gelöst. weiß nimma was es war. aber 2 slots zu verbinden geht
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ KDevelop / Qt / wxWidget ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: