Você está aqui: Qt ::: Classes, Controles e Componentes ::: QTimer |
Aprenda a usar a classe QTimer em seus programas QtQuantidade 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 Javapublic 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 |
Software 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 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 |