![]() |
|
||||
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Você está aqui: Qt ::: Classes, Controles e Componentes ::: QTimer |
Aprenda a usar a classe QTimer em seus programas QtQuantidade de visualizações: 7544 vezes |
A classe QTimer pode ser usada em nossos programas Qt quando precisamos criar timers, ou seja, ações que serão executadas repetidamente ou somente uma vez após decorrido um determinado tempo. Para usar esta classe devemos adicionar a linha:#include <QTimer> ...... à nossa seção de includes. Para criar timers usando a classe QTimer nós só precisamos criar um objeto desta classe, conectar seu sinal (signal) timeout() aos slots apropriados e efetuar uma chamada ao seu método start(). A partir daí o objeto timer emitirá o sinal timeout() em intervalos constantes. Veja um trecho de código no qual usamos um objeto da classe QTimer para exibir e atualizar constantemente as horas em um componente QLabel: JanelaPrincipal::JanelaPrincipal(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); // declaração no arquivo .h // QTimer *timer; timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(atualizarHoras())); ...... Podemos fazer com que um timer seja disparado somente uma vez por meio de uma chamada ao método setSingleShot(true). Podemos ainda chamar o método estático QTimer::singleShot() para chamar um slot (uma única vez) depois de um tempo decorrido. Veja: QTimer::singleShot(1000, this, SLOT(atualizarHoras())); ...... Em aplicações multithreaded podemos usar a classe QTimer em qualquer thread que tenha um laço de eventos (event loop). Para iniciar o laço de eventos em uma thread não-GUI, devemos usar QThread::exec(). Neste caso o Qt usa a identificação da thread para determinar qual thread emitirá o sinal timeout(). Por causa disso, devemos iniciar e parar o timer em sua própria thread. Não é possível iniciar um timer a partir de outras threads. Alternativas ao QTimer Uma alternativa ao uso da classe QTimer é chamar o método QObject::startTimer() para seu objeto e reimplementar o tratator de evento QObject::timerEvent() em suas classes (que deverão herdar de QObject). A desvantagem desta abordagem é que timerEvent() não suporta recursos de alto nível, tais como disparos únicos ou signals. Uma outra alternativa ao uso do QTimer é usar a classe QBasicTimer. Esta classe é geralmente menos complicada que o uso do método QObject::startTimer() diretamente. Alguns sistemas operacionais limitam o número de timers que podem ser usados. O Qt Framework tenta fornecer meios para evitar tal limitação. |
![]() |
Veja mais Dicas e truques de Qt |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |