![]() |
|
|
![]()
|
|
| shutffl |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
Доброго времени суток!!
Подскажите, кто знает, как можно разделить логику программы и графический интерфейс (GTK+)?? Со своими тестами уже совсем до примитива дошел: две кнопки на форме для запуска и остановки.. Программа будет использоваться как в Linux, так и в Windows.. Итак, что конкретно я пытаюсь сделать: по нажатию на кнопку должна вызываться функция, например, запускающая некий расчет (грубый пример), но при этом окно программы не должно повисать.. То есть нажимаем на кнопку "Старт" - запускаем функцию, нажимаем на "Стоп" - и функция прерывается.. Можно было бы сделать простой fork(), но на Windows его, вроде, нет.. Сейчас пробую копать в сторону GThread, но пока ничего путного не получилось.. Запуск происходит, но потом прога вылетает при попытке провести мышкой над формой.. Ошибка вида g_context_*.. То есть пытаюсь реализовать вариант двух потоков: один для интерфейса, а второй для этой функции.. Для объектов интерфейса используется структура, в которой объявлен указатель на структуру из другого хедера.. Инициализация и прочие тонкости работают "на ура".. А вот добиться параллельной работы никак не могу.. Заранее спасибо!! --------------------
shadowmoon |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
C++ интереснее, чем Русский. Выложи код
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| shutffl |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
Было бы что выкладывать.. В коде вообще ничего нет, кроме как инициализации формы с GtkBuilder и тремя сигналами.. Меня интересует теория.. Проект переписываю из соображения "веры".. До этого он был написан на Qt и никаких проблем не было.. Разве что Qt слишком много скрывает в себе.. А я предпочитаю понимать код, который пишу..
Каким образом (с теоретической точки зрения) можно написать программу (с использованием GTK+), чтобы две задачи работали параллельно и не висло окно?? И возможно ли вообще?? Я начал копать в сторону потоков (благо есть pthread-win32), но пока не смог добиться ничего стоящего.. Поэтому и обратился за помощью.. P.S. Правила хорошего тона (а-ля кусочки кода) я знаю, но выкладывать действительно нечего.. Тут скорее реальная проблема с теоретическими знаниями, к сожалению.. --------------------
shadowmoon |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В чем заключается Ваша вера? Что Qt скрывает такого, чего нельзя посмотреть в её исходниках? Какой именно код Вы не понимаете, можно пример? |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: нет Всего: 1 |
Я бы не сказал, что в Qt слишком много скрыто, что ни до чего не догадаться. Там открытые исходники. Несколько раз приходилось обходить ошибки в Qt, именно копаясь в исходниках и узнавая, как возникла та или иная ситуация. И вызывая функции, подавляющие проявление глюка. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Давайте не будем устраивать священные войны, в этом разделе и так большинство тем про Qt. Я не собираюсь ни в чем переубеждать человека, мне интересно что его сподвигло сделать такой странный, на мой взгляд, переход от Qt к Gtk+. Неужели сложность в освоении?
|
|||
|
||||
| shutffl |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
Не смешите.. За три года Qt уже надоел.. На форуме и мои темки есть про Qt.. Ситуация в том, что Qt своими функциями и макросами скрывает бОльшую часть кода.. Да, программировать легко и (очень часто) приятно, но не всегда.. Плюс при распространении приложения для Windows тащит за собой достаточно много Qt*.dll.. С Gtk+ я в свое время начинал осваивать кроссплатформенные библиотеки.. Вот и решил переписать Qt`шный проект, так как том ничего особенного: форма, кнопки, слайдеры, WebView, менюха с тулбаром да статус-бар.. Ничего сложного.. Правда используются еще и VLC`шные хедеры и *.so (*.dll).. Проблема как раз в том, чтоб нажать на кнопку и запустить файлик на проигрывание без повисания окна..
--------------------
shadowmoon |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |