Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 15.12.2010
Сообщений: 52

Таймер: вызвать функцию каждые пару секунд

21.04.2015, 01:14. Показов 2021. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, помогите. Пользую связку gtkmm и GLADE и хочу чтоб при нажатии на кнопку, скажем, функция "Х" запускалась на выполнение по таймеру. Идеально было бы как в C#: запустил таймер и каждые n секунд выполняеться действие, при этом программа не "замирает" на время ожидания. Как такое реализовать в С++ из под Debian??

Мой пробный код ниже (может нужно)
Кликните здесь для просмотра всего текста

C++
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
39
40
41
42
43
44
45
46
47
#include <gtkmm.h>
#include <iostream>
 
 
using namespace std;
 
 
Gtk::Image* m_image1;
 
Glib::RefPtr<Gdk::Pixbuf> m_pix;
 
bool thread_start=false;
 
void button1_click();
 
 
int main(int argc, char* argv[])
{
 
Gtk::Main kit(argc, argv);  
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("first.glade");
    
     
      Gtk::Window* main_win = 0;  
      builder->get_widget("window1", main_win);  
      Gtk::Button* m_button1;
    
      builder ->get_widget("button1",m_button1);  
    builder -> get_widget("image1",m_image1);
 m_button1 -> signal_clicked().connect(sigc::ptr_fun (&button1_click));  
      if (main_win)  
      {  
           kit.run(*main_win);  
      }  
      return 0;  
 
}
 
 
 
void button1_click()
{
    
    cout<<"All is working!"<<endl;
    m_pix=Gdk::Pixbuf::create_from_file("2014-05-10 02_38_52.jpg",320,240,true);
    m_image1 ->set(m_pix);
}

Файл GLADE:
Кликните здесь для просмотра всего текста
XML
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <object class="GtkWindow" id="window1">
    <property name="can_focus">False</property>
    <property name="default_width">350</property>
    <property name="default_height">400</property>
    <child>
      <object class="GtkBox" id="box1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkMenuBar" id="menubar1">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <child>
              <object class="GtkMenuItem" id="menuitem1">
                <property name="use_action_appearance">False</property>
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="label" translatable="yes">_Файл</property>
                <property name="use_underline">True</property>
                <child type="submenu">
                  <object class="GtkMenu" id="menu1">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <child>
                      <object class="GtkImageMenuItem" id="imagemenuitem1">
                        <property name="label">gtk-quit</property>
                        <property name="use_action_appearance">False</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="use_underline">True</property>
                        <property name="use_stock">True</property>
                      </object>
                    </child>
                  </object>
                </child>
              </object>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkImage" id="image1">
            <property name="width_request">320</property>
            <property name="height_request">240</property>
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="stock">gtk-missing-image</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="button1">
            <property name="label" translatable="yes">Next</property>
            <property name="use_action_appearance">False</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="use_action_appearance">False</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">2</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2015, 01:14
Ответы с готовыми решениями:

Выполнять функцию каждые n секунд
Всем привет) кто знает как в c++ сделать чтобы функция выполнялась каждые N секунд? кроме Sleep()...

Создайте функцию, которая пару последовательных чисел Фибоначчи преобразует в следующую пару
Создайте функцию, которая пару последовательных чисел Фибоначчи преобразует в следующую пару....

Вызвать функцию которая стоит после функции, в которую надо вызвать
Возможно задаю тупой вопрос. Надо вызвать control() в guicontrol_1() и в guicontrol_2(), так как...

2
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
21.04.2015, 16:16
Glib::SignalTimeout
1
0 / 0 / 1
Регистрация: 15.12.2010
Сообщений: 52
21.04.2015, 16:24  [ТС]
Спасибо! Будем пробовать! Плюс в репу однозначно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2015, 16:24
Помогаю со студенческими работами здесь

Светофор, смена картинки каждые несколько секунд ( MFC)
На форме есть 3 картинки, делаю типа светофора, и нужно что бы каждые там 3-5 секунд картинки...

Автосохранение текста из мемо каждые 25 секунд
Доброго времени суток! Вопрос следующий, я открываю через блокнотик файл, подскажите , пожалуйста,...

Каждые N секунд перебирать все запущенные процессы на ПК и выводить пути к их EXE'шникам
Здравствуйте! Есть DLL'ка, которая подключается в программу (игру) сразу после её запуска. Во...

Посылать на сервер время каждые 10 секунд
Значит есть у меня UDP клиент, который посылает время на сервер, как сделать чтобы пока сервер...

Как написать программу, удаляющую несколько файлов из разных директорий каждые 5 секунд?
Здравствуйте, уважаемы форумчани! Ситуация такая: нужно удалять несколько файлов из разных...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru