Você está aqui: Qt ::: Classes, Controles e Componentes ::: QTimer

Aprenda a usar a classe QTimer em seus programas Qt

Quantidade de visualizações: 7502 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:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#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:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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()));
  timer->start(1000);
}

void JanelaPrincipal::atualizarHoras()
{
  // vamos atualizar as horas no QLabel a cada segundo
  ui.label->setText(tr("%1").arg(QTime::currentTime().toString("hh:mm:ss")));
}

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:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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.

Link para compartilhar na Internet ou com seus amigos:

Vamos testar seus conhecimentos em Java

Analise o seguinte código Java

public class Estudos {
  public static void main(String[] args) {
    int a = 3;
    System.out.println(++a * 8);
  }
}

Qual é o resultado de sua execução?

A) 24

B) 32

C) 72

D) 25
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Vazão de projeto

O escoamento livre em condutos é caracterizado por ter uma superfície livre, cuja pressão atuante é a pressão atmosférica.

Considere o dimensionamento de um canal de drenagem em terra com vegetação rasteira nos taludes e fundo, possui: taludes 2H: 1V e declividade de fundo (So) de 20cm/km. Ele foi dimensionado para uma determinada vazão de projeto Q, tendo chegado a uma seção com largura de fundo (b) igual a 1,5m e altura da lâmina de água (yo) 1,30m. Determine qual a vazão Q do projeto e indique se a seção é de mínimo perímetro molhado.

Dados: 0,025 (cobertura vegetal rasteira).

A) Vazão de projeto de 2,45m3/s e satisfaz a condição de mínimo perímetro molhado.

B) Vazão de projeto de 2,72m3/s e satisfaz a condição de mínimo perímetro molhado.

C) Vazão de projeto de 3,94m3/s e satisfaz a condição de mínimo perímetro molhado.

D) Vazão de projeto de 3,54m3/s e não satisfaz a condição de mínimo perímetro molhado.

E) Vazão de projeto de 2,99m3/s e não satisfaz a condição de mínimo perímetro molhado.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Bombas hidráulicas

As bombas hidráulicas são um grupo de máquinas hidráulicas muito comum em sistemas de abastecimento e distribuição de água de uma cidade. Resumidamente, as bombas captam água bruta e a transportam para uma estação de tratamento para que ela seja adequada aos parâmetros de potabilidade antes do fornecimento para os usuários.

Sobre as bombas hidráulicas, o que é correto afirmar?

A) As bombas hidráulicas podem ser dividas em: centrífugas, rotativas, de êmbolo e do tipo de poços profundos.

B) As bombas hidráulicas podem ser dividas em: centrípetas, rotacionais, de pistão e do tipo poços largos-rasos.

C) As bombas hidráulicas podem ser divididas em bombas de deslocamento positivo e bombas centrífugas.

D) As bombas hidráulicas podem ser agrupadas junto com as turbinas hidráulicas no grupo de máquinas fixas.

E) As bombas centrífugas não são muito utilizadas, apesar de sua aplicação em baixas pressões e altas vazões.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

(CEBRASPE - 2024 - ITAIPU - Técnico em Hidrologia) Em relação ao tempo, o balanço hídrico de uma bacia

A) aumenta com a vazão de entrada e diminui com a vazão de evaporação.

B) Aumenta com a vazão de entrada e aumenta com a vazão de evaporação.

C) diminui com a vazão de entrada e diminui com a vazão de saída.

D) diminui com a vazão de saída e diminui com a precipitação.

E) aumenta com a vazão de evaporação e diminui com a precipitação.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual é a forma correta de se declarar uma variável do tipo inteiro em Python?

A) valor = int(20)

B) valor = 20

C) As formas A e B estão corretas

D) valor = integer(20)

E) As formas B e D estão corretas
Verificar Resposta Estudar Cards Todas as Questões

Veja mais Dicas e truques de Qt

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
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

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 38 usuários muito felizes estudando em nosso site.