crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Передача указателя на QTimer в качестве параметра в функцию
Гость_oneassasin_*
сообщение 13.4.2011, 17:40
Сообщение #1





Гости








    


Здравствуйте. На следующий код:
void DigitalClock::startTimer()
{
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(showMessage(QTimer *timer)));
    timer->start(60000););
}

мне Qt Creator подчеркнул желтой линией и написал "argument should be anonymous".
Что такое и как это можно исправить?
p.s.
SLOT(showMessage(QTimer *timer))

Подобное вообще возможно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Гость_oneassasin_*
сообщение 13.4.2011, 19:12
Сообщение #2





Гости








    


Исходный код

timer.h

#ifndef DIGITALCLOCK_H
#define DIGITALCLOCK_H

#include <QLCDNumber>

//! [0]
class DigitalClock : public QLCDNumber // потом сделаю что-бы время здесь шло
{
    Q_OBJECT

public:
    DigitalClock();
    void startTimer();

private slots:
    void showMessage(QTimer*);
    void showQuestion();
};
//! [0]

#endif


timer.cpp
#include <QtGui>

#include "digitalclock.h"

DigitalClock::DigitalClock()
{
    QTextCodec *codec = QTextCodec::codecForName("CP1251");
      QTextCodec::setCodecForTr(codec);
      setWindowTitle(QObject::tr("Заголовок"));
      this->startTimer();
}

void DigitalClock::startTimer()
{
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(showMessage(QTimer*)));
    timer->start(600000);
}

void DigitalClock::showMessage(QTimer* timer)
{
    QMessageBox msgBox;
    msgBox.setText(QObject::tr("123"));
    msgBox.exec();
    timer->stop();
    this->showQuestion();
}

void DigitalClock::showQuestion()
{
    QMessageBox msgBox;
            msgBox.setText(""); // Заголовок
            msgBox.setIcon(QMessageBox::Information);
            msgBox.setInformativeText(QObject::tr("Ещё раз?"));
            msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); // Кнопки
            msgBox.setDefaultButton(QMessageBox::Ok); // Фокус на Ок

            int ret = msgBox.exec();
             switch (ret) {
               case QMessageBox::Cancel:
                 QApplication::exit();
                   break;
               case QMessageBox::Ok:
                   this->startTimer();
                   break;
               default:
                   QApplication::exit();
                   break;
             }
}


main.cpp

#include <QtGui>

#include "digitalclock.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    DigitalClock clock;
    clock.show();
    return app.exec();
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 22:57