Cronometro in qt

Cronometro in qt

Messaggioda robertobellomo » 30 lug , 2010 2:00 pm

Salve a tutti sto tentando ormai da ore di creare un cronometro digitale con qt creator, il mio obiettivo è appunto creare un widget che funga da cronometro... i miei tentativi si sono fermati alla creazione di un widget con tre campi del tipo hh:mm:ss fin qui tutto funziona ma è ben lontano da quello che voglio ottenere ovvero un cronometro con start stop e reset e non un orologio.
qualcuno ha da propormi qualche suggerimento o modifica?

il codice è questo:
Codice: Seleziona tutto
#include <QtGui>

#include "digitalclock.h"


DigitalClock::DigitalClock(QWidget *parent)
    : QLCDNumber(parent)
{
    setSegmentStyle(Filled);
    setNumDigits(8);
    setStyleSheet("* { background-color:rgb(255,255,255);color:rgb(0,0,0); padding: 7px}}");
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(displayTime()));
    timer->start(1000);

    displayTime();

    setWindowTitle(tr("Digital Clock"));
    resize(300, 120);
}



void DigitalClock::displayTime()

{
    QTime time = QTime::currentTime();
    QString text = time.toString("hh:mm:ss");
    if ((time.second() % 2) == 0)
        {text[2] = ' ';
                text[5] = ' ';
}
    display(text);
}

header file

#ifndef DIGITALCLOCK_H
#define DIGITALCLOCK_H

#include <QLCDNumber>


class DigitalClock : public QLCDNumber
{
    Q_OBJECT

public:
    DigitalClock(QWidget *parent = 0);

private slots:
    void displayTime();
};


#endif


ho inserito come allegato il risultato ottenuto il mio obiettivo pero è quello di avere questo formato: mm:ss:mmm dove le ultime tre m sono i millisecondi con start stop e reset qualcuno puo aiutarmi?
Allegati
orologio.jpg
orologio.jpg (10.47 KiB) Osservato 237 volte
robertobellomo
Troll quasi convinto
 
Messaggi: 13
Iscritto il: 23 mar , 2010 11:39 am
Località: Milano
Programmo in: C, C++, Java

Re: Cronometro in qt

Messaggioda fefelix » 30 lug , 2010 6:51 pm

Li ho fatti al volo, funzionano ma non so se ci siano degli errori controlla..scusa ma vado di fretta: se ci sono domande o problemi fammelo sapere..
Con l'help di Qt Creator trova QLCDNumber... attento che dopo le 24 ore il comportamento è diverso
Vedi anche QTime
Ciao

P.S. Credo che questo topic debba essere postato in un'altra sezione.... (utilizza per il codice il pulsantino code oppure [ code] [ /code] senza lo spazio iniziale
Allegati
Cronometro.zip
(2.75 KiB) Scaricato 21 volte
Francesco
la stupidità è un'epidemia sempre più diffusa, e sembra che non ci sia una cura...
fefelix
Troll svezzato
 
Messaggi: 69
Iscritto il: 04 gen , 2010 1:41 pm
Località: Roma
Programmo in: c#, c++

Re: Cronometro in qt

Messaggioda robertobellomo » 02 ago , 2010 10:04 am

Grazie mille devvero :-) funziona benissimo... ora ti chiedo come faccio ad inserire il widget in una finestra dove ce ne sono altri?
robertobellomo
Troll quasi convinto
 
Messaggi: 13
Iscritto il: 23 mar , 2010 11:39 am
Località: Milano
Programmo in: C, C++, Java

Re: Cronometro in qt

Messaggioda fefelix » 02 ago , 2010 11:05 am

Hai diverse possibilità:
- puoi creare un plugin da utilizzare con Qt creator (in modo da poterlo riutilizzare e metterlo anche visivamente);
- Qt Creator ti da la possibilità di "promuovere" un QLCDNumber in una classe tua per es. QLCDCrono (per farlo quando sei su design clicca con il tasto destro e ci dovrebbe essere un Promote to... ( a volte però QtCreator da problemi));
- scrivi a "manina" quello di cui al precedente punto (classe QLCDcrono che deriva da QLCDNumber con i vari slot)
Codice: Seleziona tutto
#ifndef QLCDCRONO_H
#define QLCDCRONO_H

#include <QTime>
#include <QtGui/QLCDNumber>

class QLCDCrono : public QLCDNumber
{
    Q_OBJECT

public:
    QLCDCrono(QWidget *parent = 0);
    ~QLCDCrono();

public slots:
    void start();
    void stop();
    void reset();
    void displayTime();
    void displayTimeAsync() const;

private:
    QTime* m_timeStart;
    QTime* m_diffTime;
    QTimer* timer;
};
#endif


Fammi sapere
Francesco
la stupidità è un'epidemia sempre più diffusa, e sembra che non ci sia una cura...
fefelix
Troll svezzato
 
Messaggi: 69
Iscritto il: 04 gen , 2010 1:41 pm
Località: Roma
Programmo in: c#, c++

Re: Cronometro in qt

Messaggioda robertobellomo » 03 ago , 2010 2:36 pm

grazie per la prontezza e accuratezza delle tue risposte comunque devo risolvere un problema a monte ne cronometro ovvero non sono più interessato ai millisecondi ma ai decimi di secono ovvero questo formato mm:ss:dd minuti : secondi : decimi di secondi non nascondo la mia elevata ignoranza, ma ho provato a fare qualche modifica al tuo codice e ho fatto solo casini cioè non riesco a capire come far diventare millesecondi a tre cifre decimi di secondi a 2 cifre, sto impazzendo mi vengono numeri a 6 cifre non so proprio cosa stia combinando... aiuto :-)
robertobellomo
Troll quasi convinto
 
Messaggi: 13
Iscritto il: 23 mar , 2010 11:39 am
Località: Milano
Programmo in: C, C++, Java

Re: Cronometro in qt

Messaggioda fefelix » 03 ago , 2010 6:41 pm

robertobellomo ha scritto:ovvero non sono più interessato ai millisecondi ma ai decimi di secono

Il motivo per cui sei interessato ai decimi di secondo (anche se da quello che hai scritto sei interessato ai centesimi: leggi sotto) è opinabile, cmq avrai i tuoi buoni motivi
robertobellomo ha scritto:ai decimi di secono ovvero questo formato mm:ss:dd minuti : secondi : decimi

i decimi di secondo, con il tuo lessico sarebbero mm:ss:d, credo che tu voglia invece mm:ss:cc minuti : secondi : centesimi giusto?
robertobellomo ha scritto:ma ho provato a fare qualche modifica al tuo codice e ho fatto solo casini cioè non riesco a capire come far diventare millesecondi a tre cifre decimi di secondi a 2 cifre, sto impazzendo mi vengono numeri a 6 cifre non so proprio cosa stia combinando

probabilmente tu hai cambiato
Codice: Seleziona tutto
QString formato = "hh:mm:ss:zzz";

in
Codice: Seleziona tutto
QString formato = "hh:mm:ss:zz";

una cosa bella di Qt (e Qt creator) è che ha una decente guida, e come ti dicevo nel secondo post, "QTime class reference", ed in particolare QTime::toString(...), ti poteva dare delle delucidazioni:
z the milliseconds without leading zeroes (0 to 999): ti scrive i millesecondi senza gli zeri iniziali
mentre zzz con gli zeri iniziali;
zz non è previsto, quindi la funzione toString interpreta zz come due z z: questo è il motivo per cui hai 6 numeri, i primi tre uguali agli ultimi tre.
Per risolvere il problema, e prendere anche spunto, dovresti vedere il codice di QTime::toString che si trova in qdatetime.cpp: puoi facilitarti utilizzando Qt Creator attraverso il debug.
Francesco
la stupidità è un'epidemia sempre più diffusa, e sembra che non ci sia una cura...
fefelix
Troll svezzato
 
Messaggi: 69
Iscritto il: 04 gen , 2010 1:41 pm
Località: Roma
Programmo in: c#, c++

Re: Cronometro in qt

Messaggioda fefelix » 04 ago , 2010 7:30 pm

Un modo "ipotetico" per risolvere il problema è reimplementare QTime, modificando le funzioni:
fmtDateTime(format, this, 0);
getFmtString(frm, dt, dd, ap);
ma ovviamente non è per il caso de quo;
ti posto il codice dell'applicazione che fa tutto quello che ti serve ma:
ho utilizzato i puntatori a funzione membro per fare esercitazione: NON E' UN MODO DI PROGRAMMARE OO!!! prendilo come spunto per la conversione dei decimi o centesimi e sviluppa la tua classe.....

main.cpp
Codice: Seleziona tutto
#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    w.setFormat(w.formatMSec);//non metterlo prima altrimenti va in crash
    return a.exec();
}


mainwindow.h
Codice: Seleziona tutto
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "ui_mainwindow.h"

QT_FORWARD_DECLARE_CLASS(QTime)
QT_FORWARD_DECLARE_CLASS(QTimer)

class MainWindow : public QMainWindow, private Ui::MainWindow
{

    Q_OBJECT

    typedef QString (MainWindow::* formatString)(const QTime& t);

public:   
    enum format{
        formatMSec=0,
        formatDSec=1,
        formatCSec=2
               };

    explicit MainWindow(QWidget *parent = 0,format f=formatMSec);
    ~MainWindow();

protected:
    void changeEvent(QEvent *e);

public slots:
    void setFormat(format f);
    void displayTime();
    void displayTimeAsync();

private slots:
    void on_pushButtonStart_clicked();
    void on_pushButtonStop_clicked();
    void on_pushButtonReset_clicked();
    void on_pushButtonCambiaFormato_clicked();

private:
    void timeToString(const QTime& time, format f);
    QString timeToHMS(const QTime& time);
    QString timeToHMSC(const QTime& time);
    QString timeToHMSD(const QTime& time);
    QString timeToHMSM(const QTime& time);
    QTime* m_timeStart;
    QTime* m_diffTime;
    QTimer* timer;
    formatString formatTime;//puntatore a funzione membro
    format formato;
};

#endif // MAINWINDOW_H


mainwindow.cpp aggiornato
Codice: Seleziona tutto
#include "mainwindow.h"
#include <QTime>
#include <QTimer>

QString valoreIniziale;

MainWindow::MainWindow(QWidget *parent, format f) :
    QMainWindow(parent){
    setupUi(this);
    m_timeStart = 0;
    m_diffTime = new QTime(0,0,0,0);
    setFormat(f);
    this->lcdNumber->display(valoreIniziale);
    this->pushButtonStop->setEnabled(false);
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(displayTimeAsync()));
}

MainWindow::~MainWindow(){
    delete m_diffTime;
    m_diffTime=0;
    delete m_timeStart;
    m_timeStart=0;
    delete timer;
    timer=0;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::on_pushButtonStart_clicked()
{
    m_timeStart = new QTime();
    m_timeStart->start();
    this->pushButtonStop->setEnabled(true);
    this->pushButtonStart->setEnabled(false);
    timer->start(15);
}

void MainWindow::on_pushButtonReset_clicked()
{
    timer->stop();
    this->pushButtonStop->setEnabled(false);
    this->pushButtonStart->setEnabled(true);

    // si potrebbe anche mettere
    // delete m_timeStart;
    // m_timeStart = 0;
    // ed al posto della riga successiva
    //displayTime();

    this->lcdNumber->display(valoreIniziale);
    if(m_timeStart)  {
        delete m_timeStart;
        m_timeStart=0;
    }
    //m_timeStart = new QTime();
    delete m_diffTime;
    m_diffTime = new QTime(0,0,0,0);
}

void MainWindow::on_pushButtonStop_clicked()
{
    timer->stop();
    this->pushButtonStart->setEnabled(true);
    this->pushButtonStop->setEnabled(false);
    displayTime();
    delete m_timeStart;//non metterlo prima altrimenti resetta
    m_timeStart = 0;
}

void MainWindow::on_pushButtonCambiaFormato_clicked()
{
    if(this->formato==formatDSec)
        this->setFormat(formatCSec);
    else if(this->formato==formatCSec)
        this->setFormat(formatMSec);
    else this->setFormat(formatDSec);
}

void MainWindow::displayTime()
{
    int ms = 0;
    if(m_timeStart){
        ms = m_timeStart->elapsed();
    }

    if(m_diffTime->isNull()){
        m_diffTime = new QTime(0,0,0,0);
    }
    *m_diffTime = m_diffTime->addMSecs(ms);
    //this->lcdNumber->display(m_diffTime->toString(formato));
    this->lcdNumber->display(((this->*this->formatTime)(*m_diffTime)));
}

//void MainWindow::displayTimeAsync() const
//{
//    QTime time(*m_diffTime);

//    this->lcdNumber->display(time.addMSecs(m_timeStart->elapsed()).toString(formato));
//}

void MainWindow::displayTimeAsync()
{
    QTime time(*m_diffTime);
    int ms = 0;
    if(m_timeStart){
        ms = m_timeStart->elapsed();
    }
    this->lcdNumber->display((this->*this->formatTime)(time.addMSecs(ms)));
}

void MainWindow::setFormat(MainWindow::format f)
{
    switch(f){
    case formatCSec:
        this->formato=this->formatCSec;
        this->formatTime = &MainWindow::timeToHMSC;
        valoreIniziale = "00:00:00:00";
        if(this->lcdNumber->isVisible())
            displayTimeAsync();
        break;

    case formatDSec:
        this->formato=this->formatDSec;
        this->formatTime = &MainWindow::timeToHMSD;
        valoreIniziale= "00:00:00:0";
        if(this->lcdNumber->isVisible())
            displayTimeAsync();
        break;

    default:
    case formatMSec:
        this->formato=this->formatMSec;
        this->formatTime = &MainWindow::timeToHMSM;
        valoreIniziale = "00:00:00:000";
        if(this->lcdNumber->isVisible())
            displayTimeAsync();
        break;
    };
}

QString MainWindow::timeToHMS(const QTime& time)
{
    QString buf;
    buf += QString::number(time.hour()).rightJustified(2, QLatin1Char('0'), true);
    buf += ":";
    buf += QString::number(time.minute()).rightJustified(2, QLatin1Char('0'), true);
    buf += ":";
    buf += QString::number(time.second()).rightJustified(2, QLatin1Char('0'), true);
    return buf;
}

QString MainWindow::timeToHMSM(const QTime& time)
{
    QString buf;
    buf+=timeToHMS(time);
    buf+=":";
    int msec = time.msec();
    buf += QString::number(msec).rightJustified(3, QLatin1Char('0'), true);
    return buf;
}

QString MainWindow::timeToHMSC(const QTime& time)
{
    QString buf;
    buf+=timeToHMS(time);
    buf+=":";
    int csec = time.msec()/10;
    buf += QString::number(csec).rightJustified(2, QLatin1Char('0'), true);
    return buf;
}

QString MainWindow::timeToHMSD(const QTime& time)
{
    QString buf;
    buf+=timeToHMS(time);
    buf+=":";
    int dsec = time.msec()/100;
    buf += QString::number(dsec).rightJustified(1, QLatin1Char('0'), true);
    return buf;
}


mainwindow.ui
Codice: Seleziona tutto
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>263</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QGridLayout" name="gridLayout">
    <item row="0" column="0">
     <layout class="QVBoxLayout" name="verticalLayout">
      <item>
       <widget class="QLCDNumber" name="lcdNumber">
        <property name="autoFillBackground">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">background-color:rgb(255,255,255);color:rgb(0,0,0); padding: 7px</string>
        </property>
        <property name="frameShape">
         <enum>QFrame::Box</enum>
        </property>
        <property name="smallDecimalPoint">
         <bool>false</bool>
        </property>
        <property name="numDigits">
         <number>12</number>
        </property>
        <property name="digitCount">
         <number>12</number>
        </property>
        <property name="segmentStyle">
         <enum>QLCDNumber::Filled</enum>
        </property>
        <property name="value" stdset="0">
         <double>0.000000000000000</double>
        </property>
        <property name="intValue" stdset="0">
         <number>0</number>
        </property>
       </widget>
      </item>
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout">
        <item>
         <widget class="QPushButton" name="pushButtonStart">
          <property name="text">
           <string>Start</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QPushButton" name="pushButtonStop">
          <property name="text">
           <string>Stop</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QPushButton" name="pushButtonReset">
          <property name="text">
           <string>Reset</string>
          </property>
         </widget>
        </item>
       </layout>
      </item>
     </layout>
    </item>
    <item row="1" column="0">
     <widget class="QPushButton" name="pushButtonCambiaFormato">
      <property name="text">
       <string>Cambia Formato</string>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>400</width>
     <height>24</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>


scusate :twisted: :mrgreen: :mrgreen: :twisted:
Ultima modifica di fefelix il 22 ago , 2010 4:37 pm, modificato 1 volta in totale.
Francesco
la stupidità è un'epidemia sempre più diffusa, e sembra che non ci sia una cura...
fefelix
Troll svezzato
 
Messaggi: 69
Iscritto il: 04 gen , 2010 1:41 pm
Località: Roma
Programmo in: c#, c++

Re: Cronometro in qt

Messaggioda robertobellomo » 08 ago , 2010 3:51 pm

fefelix ha scritto:
robertobellomo ha scritto:ovvero non sono più interessato ai millisecondi ma ai decimi di secono

Il motivo per cui sei interessato ai decimi di secondo (anche se da quello che hai scritto sei interessato ai centesimi: leggi sotto) è opinabile, cmq avrai i tuoi buoni motivi
robertobellomo ha scritto:ai decimi di secono ovvero questo formato mm:ss:dd minuti : secondi : decimi

i decimi di secondo, con il tuo lessico sarebbero mm:ss:d, credo che tu voglia invece mm:ss:cc minuti : secondi : centesimi giusto?
robertobellomo ha scritto:ma ho provato a fare qualche modifica al tuo codice e ho fatto solo casini cioè non riesco a capire come far diventare millesecondi a tre cifre decimi di secondi a 2 cifre, sto impazzendo mi vengono numeri a 6 cifre non so proprio cosa stia combinando

probabilmente tu hai cambiato
Codice: Seleziona tutto
QString formato = "hh:mm:ss:zzz";

in
Codice: Seleziona tutto
QString formato = "hh:mm:ss:zz";

una cosa bella di Qt (e Qt creator) è che ha una decente guida, e come ti dicevo nel secondo post, "QTime class reference", ed in particolare QTime::toString(...), ti poteva dare delle delucidazioni:
z the milliseconds without leading zeroes (0 to 999): ti scrive i millesecondi senza gli zeri iniziali
mentre zzz con gli zeri iniziali;
zz non è previsto, quindi la funzione toString interpreta zz come due z z: questo è il motivo per cui hai 6 numeri, i primi tre uguali agli ultimi tre.
Per risolvere il problema, e prendere anche spunto, dovresti vedere il codice di QTime::toString che si trova in qdatetime.cpp: puoi facilitarti utilizzando Qt Creator attraverso il debug.


Ciao scusa il ritardo ma sono stato fuori per lavoro, cmq ho provato a risolvere il problema come mi hai suggerito tu e tutte le supposizioni sui miei errori sono corrette, cmq ho provato a sostituire formato = "hh:mm:ss:zzz"; con formato = "hh:mm:ss:cc"; e quindi valoreIniziale = "00:00:00:00"; ma il risultato è stato deludente ovvero ho ottenuto questo allegato N 1, per il resto non ho capito proprio bene cosa devo modificare o meglio sto cercando di capire se dipende solo dalle lettere che utilizzo in formato o anche da altro...

scs il disturbo aspetto con ansia una tua risposta
ciaoo

RB
Allegati
1.jpg
1.jpg (27.04 KiB) Osservato 106 volte
robertobellomo
Troll quasi convinto
 
Messaggi: 13
Iscritto il: 23 mar , 2010 11:39 am
Località: Milano
Programmo in: C, C++, Java

Re: Cronometro in qt

Messaggioda fefelix » 08 ago , 2010 7:09 pm

robertobellomo ha scritto:Ciao scusa il ritardo ma sono stato fuori per lavoro, cmq ho provato a risolvere il problema come mi hai suggerito tu e tutte le supposizioni sui miei errori sono corrette, cmq ho provato a sostituire formato = "hh:mm:ss:zzz"; con formato = "hh:mm:ss:cc"; e quindi valoreIniziale = "00:00:00:00";

forse non hai letto bene quello che ho scritto...quello era riferito alla comprensione di quello che volevi.
La risposta era in parte alla fine del mio post (sottintendeva che QTime::toString(...) prende i simboli che sono ben scritti nel link che ti avevo scritto..bastava che tu ci cliccassi sopra, cmq te lo scrivo in maniera più semplice: http://doc.qt.nokia.com/4.6/qtime.html#toString) e ti scrivevo questo:
fefelix ha scritto:una cosa bella di Qt (e Qt creator) è che ha una decente guida, e come ti dicevo nel secondo post, "QTime class reference", ed in particolare QTime::toString(...), ti poteva dare delle delucidazioni:
z the milliseconds without leading zeroes (0 to 999): ti scrive i millesecondi senza gli zeri iniziali
mentre zzz con gli zeri iniziali;
zz non è previsto, quindi la funzione toString interpreta zz come due z z: questo è il motivo per cui hai 6 numeri, i primi tre uguali agli ultimi tre.
Per risolvere il problema, e prendere anche spunto, dovresti vedere il codice di QTime::toString che si trova in qdatetime.cpp: puoi facilitarti utilizzando Qt Creator attraverso il debug.


Nel post successivo ti dicevo che la soluzione, con una speculazione filosofica-scientifica, era reimplementare QTime MA NON ERA IL CASO quindi prendilo come un mio errore.
La soluzione era quella successiva in cui ti ho scritto un programma intero!!!!!!! che ti cambia il formato anche a runtime .... ti ho scritto anche i nomi dei file!!!! ti basta fare un copia ed incolla e fare un nuovo progetto..... non ti ho fatto un file .zip perchè mi sembrava brutto darti la pappa pronta.

scrivevo:
ti posto il codice dell'applicazione che fa tutto quello che ti serve ma:
ho utilizzato i puntatori a funzione membro per fare esercitazione: NON E' UN MODO DI PROGRAMMARE OO!!! prendilo come spunto per la conversione dei decimi o centesimi e sviluppa la tua classe.....

La questione dei puntatori a funzione membro è una maggiore flessibilità che ti da il C++ (si può ottenere lo stesso risultato programmando secondo il paradigma Object Oriented, seppur utilizzando più classi e magari il design patterns Strategy (cercalo su internet)) comunque da quello che ho scritto puoi vedere come, utilizzando tali puntatori, il codice è più compatto.

Adesso prova a fare il copia-incolla dei file di cui sopra in un nuovo progetto e fammi sapere se hai dei problemi...
Francesco
la stupidità è un'epidemia sempre più diffusa, e sembra che non ci sia una cura...
fefelix
Troll svezzato
 
Messaggi: 69
Iscritto il: 04 gen , 2010 1:41 pm
Località: Roma
Programmo in: c#, c++

Re: Cronometro in qt

Messaggioda robertobellomo » 11 ago , 2010 12:17 pm

ciao ti chiedo scs per il mio approccio imbarazzate alla programmazione, cmq ho fatto quello che mi hai scritto sembrava funzionare tutto a meraviglia quando il compilatore mi ha dato questi 2 errori su questa parte di codice ovvero 1: duplicate case value riga 142 2:previously used here riga 133

Codice: Seleziona tutto
  switch(f){
    case formatCSec:
        this->formato=this->formatCSec;
        this->formatTime = &MainWindow::timeToHMSC;
        valoreIniziale = "00:00:00:00";
        if(this->lcdNumber->isVisible())
            displayTimeAsync();
        break;

    /*133*/case formatDSec:
        this->formato=this->formatDSec;
        this->formatTime = &MainWindow::timeToHMSD;
        valoreIniziale= "00:00:00:0";
        if(this->lcdNumber->isVisible())
            displayTimeAsync();
        break;

    default:
    /*142*/case formatDSec:
        this->formato=this->formatMSec;
        this->formatTime = &MainWindow::timeToHMSM;
        valoreIniziale = "00:00:00:000";
        if(this->lcdNumber->isVisible())
            displayTimeAsync();
        break;
    };case formatDSec:
        this->formato=this->formatDSec;
        this->formatTime = &MainWindow::timeToHMSD;
        valoreIniziale= "00:00:00:0";
        if(this->lcdNumber->isVisible())
            displayTimeAsync();
        break;


io ho provato a eliminare dalla riga 133 a quella 139 il problema sembrava essere risolto a livello di compilazione ma una volta eseguito il widged non mi permette di cambiare formato.... aiuto!!!
robertobellomo
Troll quasi convinto
 
Messaggi: 13
Iscritto il: 23 mar , 2010 11:39 am
Località: Milano
Programmo in: C, C++, Java

Prossimo

Torna a Qt & C++

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite