Форум программистов, компьютерный форум, киберфорум
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 156
Записей в блоге: 1
#1

QT клик мышкой в заданное время, в соотношении с таймером - C++ Qt

22.06.2014, 23:41. Просмотров 2068. Ответов 30
Метки нет (Все метки)

Помогите. Нужно сделать таймер с точностью до тысячных. Затем, если в таймере появляется нужное число, то производится клик мышкой. Пример: указано несколько значений 5321, 7653, 14327, 15000. Запускаем таймер, начался отчсет и как только в таймере появилось время 5 секун и 321 мсек., то производится клик мышкой. И по аналогии таймер "идет" дальше 7 сек и 653 мсек, 14 сек 327 мсек и т.д. И в каждый момент производится клик мышкой. Или какой язык программирования будет проще для этого дела? Помогите, если возможно, в QTCreator это чудо сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2014, 23:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос QT клик мышкой в заданное время, в соотношении с таймером (C++ Qt):

Нарисовать часы, поставить стрелки на заданное время - C++ Qt
Добрый день, уважаемые форумчане! К сожалению, с изучением программирования дела плохи. Всегда делала упор на математические предметы, но...

Клик мышки в заданное время с точностью миллисекундах - Delphi
Пожалуйста, у меня просьба добрым программистам: Нужен мини программка с расширением "swf" или типо такая чтоб работала без админ правами,...

Клик в соответствии с таймером - Delphi
zAkS__dBUpU Вот то что я хотел сделать уже пол года. Нужно что бы в программе был таймер, а таймер работает с интервалом в 1 мс. Если в...

Мягкий лонг-клик по кнопке с таймером - Программирование Android
Гуру, подскажите. Есть ли ПРОСТОЕ и готовое решение для такого?? Есть: Обычная Button увеличивает параметр/счетчик на +1. ...

Клик мышкой - Java
Как заставить мышку кликать каждые n секунд без участия человека? Возможно надо использовать класс Robot и т.д , но не получается...

Клик мышкой - Delphi
Как узнать на какой компонент я сделал клик мышкой

30
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 574
23.06.2014, 09:25 #2
Тебе ни какая ОС не даст гарантию, что прошло ровно 5 секунд и 321 мсек.
0
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 156
Записей в блоге: 1
23.06.2014, 12:00  [ТС] #3
Aneron, Но причем тут ОС... В программу будет свой собственный таймер. Который будет работать сам по себе, без влияния ОС.
0
NafNaf
21 / 21 / 1
Регистрация: 22.07.2012
Сообщений: 214
23.06.2014, 12:02 #4
Цитата Сообщение от AndreySeVeN Посмотреть сообщение
Но причем тут ОС... В программу будет свой собственный таймер. Который будет работать сам по себе, без влияния ОС.
Свой собственный таймер берет "время" с помощью ОС.
Просто ты наверно пользуешься QTimer - а это фантик который для тебя один. А по факту для каждой ОС свой.
0
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 574
23.06.2014, 12:04 #5
AndreySeVeN, твой таймер реализован используя API ОСи, которую ты используешь.
0
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 156
Записей в блоге: 1
23.06.2014, 12:17  [ТС] #6
Aneron, Так я не прошу что бы он до наносекунд был точен -__-... Просто таймер запустился и по нему создаются клики мышкой. Но до тысячных все будет точно работать. Уже проверял. Как считывать показатель таймера и сделать клик в нужное время?
0
Asting
39 / 39 / 13
Регистрация: 14.10.2013
Сообщений: 174
23.06.2014, 12:23 #7
Запустить несколько таймеров для ваших значений и ловить сигналы timeout() ?
0
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 574
23.06.2014, 12:24 #8
AndreySeVeN, создаешь слот, который кликает, а подключаешь слот к сигналу таймера.
0
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 156
Записей в блоге: 1
23.06.2014, 12:31  [ТС] #9
Aneron, А как записать тогда те несколько сотен значений таймера, при котором должен произойти клик?
Можно поподробнее или с исходниками? А то я не такой удалой программист и мне много чего сейчас не понятно. А сделать этот проект нужно.

Добавлено через 36 секунд
Asting, несколько таймеров? Ведь значиний будет несколько сотен!!! А то и тысяч
0
NafNaf
21 / 21 / 1
Регистрация: 22.07.2012
Сообщений: 214
23.06.2014, 12:44 #10
Цитата Сообщение от AndreySeVeN Посмотреть сообщение
А как записать тогда те несколько сотен значений таймера, при котором должен произойти клик?
Можно поподробнее или с исходниками? А то я не такой удалой программист и мне много чего сейчас не понятно. А сделать этот проект нужно.
Вы не правильно поняли. Вы указываете период с которым должен срабатывать таймер (в миллисекундах) и соединяете сигнал который будет выдавать таймер после каждого периода с слотом фукцией которая будет исполнять ваш код (в данном случае нажимать на кнопку мыши)

Добавлено через 1 минуту
C++ (Qt)
1
2
3
QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    timer->start(1000);
(c) Православные Доки
0
Asting
39 / 39 / 13
Регистрация: 14.10.2013
Сообщений: 174
23.06.2014, 12:45 #11
Цитата Сообщение от NafNaf Посмотреть сообщение
указываете период с которым должен срабатывать таймер
но чуть выше:
Цитата Сообщение от AndreySeVeN Посмотреть сообщение
Ведь значиний будет несколько сотен!!! А то и тысяч
AndreySeVeN,
Еще такой вариант...чувствую конечно тоже не крут, но все же:
1 таймер, размером 1 мс, подключаете к ф-ции которая инкриментирует переменную на +1 с каждым срабатыванием и сразу сравнивает её с массивом необходимых значений, и если равно то вызывает ф-цию клика по мышке. Можно поставить любую точность например 5 мс, и +5 к переменной в ф-ции.
0
NafNaf
21 / 21 / 1
Регистрация: 22.07.2012
Сообщений: 214
23.06.2014, 12:51 #12
Цитата Сообщение от Asting Посмотреть сообщение
но чуть выше:
Он имел ввиду другое.
Он не зал про работу QTimer-a и эти несколько сотен значений выглядят наверно у него вот так.
Пероид =0,5 сек.
0 0.5 1.0 1.5.......
Вот (наверно) про что он говорил.

Добавлено через 56 секунд
Цитата Сообщение от AndreySeVeN Посмотреть сообщение
время 5 секун и 321 мсек., то производится клик мышкой. И по аналогии таймер "идет" дальше 7 сек и 653 мсек, 14 сек 327 мсек и т.д.
Если рассматривать вот это

Добавлено через 3 минуты
Я понял смысл. Это я напутал.
Тогда все просто.
C++ (Qt)
1
2
3
QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    timer->start(1);
В update() через QTime проверять текущее время отнимая его от времени при старте(или после следующего сигнала) и через массив записанных временных отрезков и если больше или равно выдавать сигнал.
0
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 156
Записей в блоге: 1
23.06.2014, 12:56  [ТС] #13
NafNaf, нет, что за бред... Значений например: 12552, 13425, 15683 и т.д. Это значение в милисекундах!!! То есть 12 секунд и 552 мсек. и т.д. Мне не нужен никакой периуд.

Добавлено через 2 минуты
Цитата Сообщение от NafNaf Посмотреть сообщение
QTimer *timer = new QTimer(this);
* * connect(timer, SIGNAL(timeout()), this, SLOT(update()));
* * timer->start(1);
Так, вот что то наклевывается. А вот теперь нажно записать значение, скажем 1352, что будет означать, сделать клик через 1 сек. и 352 мсек.
0
NafNaf
21 / 21 / 1
Регистрация: 22.07.2012
Сообщений: 214
23.06.2014, 13:03 #14
Цитата Сообщение от AndreySeVeN Посмотреть сообщение
Так, вот что то наклевывается. А вот теперь нажно записать значение, скажем 1352, что будет означать, сделать клик через 1 сек. и 352 мсек.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtTest/QTest>
#include <QDebug>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    count=0;
    connect(&timer, SIGNAL(timeout()), this, SLOT(tik()) );
    list_time.append(5321);
    list_time.append(7653);
    list_time.append(14327);
    list_time.append(15000);
    time = QTime::currentTime();
    timer.start(1);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::tik()
{
    time2 = QTime::currentTime() - time;
    int mtime = time2.second()*1000 + time2.msec();
    if( list_time[0] <= mtime)
    {
        func_mouse();
        list_time.pop_front();
    }
}
void MainWindow::func_mouse()
{
    //эмуляция нажатия кнопки мыши
}
Добавлено через 1 минуту
Не проверил проект, немного не так. QTime придется в ручную отнимать.

Добавлено через 1 минуту
Стыдно за код выше. Извините.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtTest/QTest>
#include <QDebug>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    count=0;
    connect(&timer, SIGNAL(timeout()), this, SLOT(tik()) );
    list_time.append(5321);
    list_time.append(7653);
    list_time.append(14327);
    list_time.append(15000);
    time.start();
    timer.start(1);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::tik()
{
    if( list_time[0] <= time.elapsed() )
    {
        func_mouse();
        list_time.pop_front();
    }
}
void MainWindow::func_mouse()
{
    //эмуляция нажатия кнопки мыши
}
0
AndreySeVeN
2 / 2 / 1
Регистрация: 06.06.2014
Сообщений: 156
Записей в блоге: 1
23.06.2014, 13:07  [ТС] #15
NafNaf,
Цитата Сообщение от NafNaf Посмотреть сообщение
list_time.append(5321);
* * list_time.append(7653);
* * list_time.append(14327);
* * list_time.append(15000);
Придется вручную вводить. А если скажем текстовый файл? Со значениями в таком виде:
5321
7653
14327
15000
0
23.06.2014, 13:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2014, 13:07
Привет! Вот еще темы с ответами:

Клик мышкой - C++ WinAPI
Подскажите как сделать двойной клик в любую область экрана. Ничего рабочего не нашел.

Клик мышкой - Delphi
Здравстуйте товарищи программисты. Как сделать так что бы программа сама производила клики мышкой(точнее имитировала их)? задача в том...

Клик мышкой - PascalABC.NET
Здравствуйте! У меня вопрос по PascalABC.NET: 1)Как, кликая на кнопку(!!!ТОЛЬКО НА КНОПКУ!!!), выполнялся выход из программы(или любое...

клик мышкой - C#
Здравствуйте. Подскажите плиз, как программно нажать и отпустить левую кнопку мышки. using System; using System.Collections.Generic;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru