Название: Вторая форма в проекте. Отправлено: Alexu007 от Май 19, 2013, 21:53 Делаю по нагугленному: http://easy-qt.blogspot.ru/2012/10/1.html
Добавил в проект вторую форму, она по умолчанию назвалась не Form, а Ui_Form. Ну да ладно. Файлы .h и .cpp в проекте почему-то не показываются. добавил #include "ui_form.h" в объявлении класса создал указатель на новую форму private: Ui_Form *myform; в конструкторе создал новую форму: myform = new Ui_Form(); ругается на строчку: connect(ui->pushButton, SIGNAL(clicked()), myform, SLOT(show())); 1. Чё ей не нравится? 2. Я не хочу выводить форму на экран по нажатию кнопки. Я хочу вставить show() в конструктор, чтобы на экране сразу появлялись 2 формы. Это можно сделать? Название: Re: Вторая форма в проекте. Отправлено: qwyllum от Май 19, 2013, 22:56 Прошу прощения за свои ламерские пять копеек. А почему бы не создать еще один класс на основе Dialog и не работать с ним? Qt сам сгенерит необходимый код. А в главной файле можете связать требуемые сигналы и слоты.
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 20, 2013, 07:50 Прошу прощения за свои ламерские пять копеек. А почему бы не создать еще один класс на основе Dialog и не работать с ним? Qt сам сгенерит необходимый код. А в главной файле можете связать требуемые сигналы и слоты. Только потому, что в примере создаётся ещё один клас на основе Widget - и я сделал так же. Но сигналы и слоты почему-то не связываются. Попробую сделать то же самое с Dialogом.Название: Re: Вторая форма в проекте. Отправлено: Serr500 от Май 20, 2013, 08:28 ругается на строчку: Как именно ругается?connect(ui->pushButton, SIGNAL(clicked()), myform, SLOT(show())); Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 20, 2013, 15:36 Заморочки с добавлением формы в проект - добавляется только файл form.ui, а h и cpp нет.
Мля... разобрался. Нужно было добавлять класс form, а я всё пытался добавить только форму, ну она и добавлялась... Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 20, 2013, 18:23 Ну боле мене получилось, хочу такой дизайн. А как сделать, чтобы окна рисовались на раб. столе в определённом месте? Сейчас все три рисуются по центру, приходится раздвигать вручную.
У квадратных форм отключить (сделать неактивным) красный крестик, чтобы их нельзя было закрыть, только вместе с 3-м окном. И еще ламерский вопрос. Мне нужна глобальная переменная, которую было бы видно во всех трёх модулях. Где её объявить? Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 21, 2013, 00:07 В файле widget.h
Код
в файле widget.cpp Код
ругается: C:\QtSDK\Alexu007\MBoy\untitled\widget.cpp:58: ошибка: expected unqualified-id before '.' token Название: Re: Вторая форма в проекте. Отправлено: Serr500 от Май 21, 2013, 08:19 ABC::table
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 21, 2013, 15:26 Спасиб большое. В общем, я выкрутился по другому: я перенес paintEventы и mousePressEventы в файл основной формы - и они "увидели" глобальные переменные! А вообще, что за хрень такая - область видимости файл? Кто это придумал? Мне приходится переписывать код программы в зависимости от того, в одном файле она написана или в нескольких...
Название: Re: Вторая форма в проекте. Отправлено: Bepec от Май 21, 2013, 17:20 Глобальные переменные - зло.
Да, без них иногда не обойтись, да, они нужны. Но злоупотреблять ими нельзя. Область видимости только та, которую вы даёте переменной. Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 21, 2013, 18:55 В программе 3 формы: основная Widget и две вспомогательные Form_comp и Form_homo. На виджете прогрессбар, при клике кнопкой в Form_comp вызывается обработчик нажатия кнопки:
Код
Как в обработчик Form_comp::mousePressEvent прикрутить progressBar_Homo->setValue(mouse_x * 10); из другой формы? Чтобы по нажатию кнопки в одной форме менялись показания progressBar в другой? Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 21, 2013, 20:04 сигнал отправлять например, а коннектить в Widget
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 22, 2013, 08:38 Спасиб, получилось.
А такой ещё вопрос: я когда запускю Qt и открываю проект, у меня каждый раз открывается окно "мои документы", и приходится каждый раз вручную кликать: диск С - QtSDK - Alexu007 - MBoy - untitled. А нельзя сделать, чтобы он на предыдущем проекте открывался? И ещё: мне пришлось перетащить из form_homo.cpp в widget.cpp функции только потому, что они не видят глобальных переменных, объявленных в файле widget.cpp. Оно конечно и так работает, но в widget.cpp теперь многа функций, а form_homo.cpp стоит пустой. Как сделать, чтобы глобальная переменая была видна во всём проекте, а не только в файле, где она объявлена? С таким подходом мне ваще придётся всю программу в один файл запихивать... Пробовал объявлять глобальные переменные в файле .h - компилятор ругается зараза... Название: Re: Вторая форма в проекте. Отправлено: lighting от Май 22, 2013, 10:23 я когда запускю Qt и открываю проект, у меня каждый раз открывается окно "мои документы", и приходится каждый раз вручную кликать: диск С - QtSDK - Alexu007 - MBoy - untitled. А нельзя сделать, чтобы он на предыдущем проекте открывался? Инструменты -> Параметры -> Сборка и запуск -> Основное -> Каталог проектовНазвание: Re: Вторая форма в проекте. Отправлено: kambala от Май 22, 2013, 11:51 И ещё: мне пришлось перетащить из form_homo.cpp в widget.cpp функции только потому, что они не видят глобальных переменных, объявленных в файле widget.cpp. Оно конечно и так работает, но в widget.cpp теперь многа функций, а form_homo.cpp стоит пустой. Как сделать, чтобы глобальная переменая была видна во всём проекте, а не только в файле, где она объявлена? С таким подходом мне ваще придётся всю программу в один файл запихивать... в form_homo.cpp пишешь где-нибудь в начале extern int myvar;Пробовал объявлять глобальные переменные в файле .h - компилятор ругается зараза... потому что их надо еще инициализировать значением в .cppНазвание: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 22, 2013, 14:00 Спасибо большое, вы оба мне очень помогли. :)
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 22, 2013, 18:15 Чё то я затупил с изменением цвета progressBar с зелёного на красный. Вроде и пример где-то видел, где цвет меняется. Не могу найти нигде... Как?
Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 22, 2013, 18:26 в справке по Qt style sheet
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 22, 2013, 19:22 Код
Это меняет цвет, но прогрессбар некрасивый становится, неанимированный... по другому никак? Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 23, 2013, 13:07 Как сделать кнопку активной/неактивной? Пишу:
Код
Я пробовал в слоте переключать enabledChange, не получается Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 23, 2013, 17:19 connect(FH, SIGNAL(play_EnDiz(bool)), ui->pushButton_2, SLOT(setEnabled(bool)));
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 24, 2013, 14:16 Почему не работает
Код
Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 24, 2013, 16:30 опробую свой дар телепата:
1. отсутствует ; 2. QT += testlib Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 24, 2013, 16:37 А как по другому можно паузу в програме организовать?
Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 24, 2013, 16:44 можно банально через sleep(), но это подвесит окно. смотря для чего пауза нужна.
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 24, 2013, 17:00 На sleep() ругается, может библиотеку какую подключать нужно?
Название: Re: Вторая форма в проекте. Отправлено: Bepec от Май 24, 2013, 17:03 windows.h
Название: Re: Вторая форма в проекте. Отправлено: mutineer от Май 24, 2013, 17:03 Раз ругается, нужно взять эту ругань и скопировать ее сюда или в поисковик
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 24, 2013, 17:14 windows.h не помогаетРаз ругается, нужно взять эту ругань и скопировать ее сюда или в поисковик Код
C:\QtSDK\Alexu007\MBoy\untitled\widget.cpp:190: ошибка: 'sleep' was not declared in this scope Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 24, 2013, 17:16 Sleep() под виндой. научись хоть гуглом пользоваться.
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 24, 2013, 17:41 Sleep() под виндой. научись хоть гуглом пользоваться. У меня всё под виндой! Гугл посоветовал: Код
но так не заработало, написало что QThread::msleep() протектед. Но когда я кликнул на ошибку, у меня открылся до этого невидимый мне файл, в котором как раз и protected: QThread::msleep(). Тогда я перенёс ету строчку в в public: и заработало! Что я наделал? Я сломал Qt? Название: Re: Вторая форма в проекте. Отправлено: mutineer от Май 24, 2013, 17:43 Камбала говорил тебе о том, что под вендами Sleep с большой буквы пишется
Название: Re: Вторая форма в проекте. Отправлено: Majestio от Май 24, 2013, 17:44 Тогда я перенёс ету строчку в в public: и заработало! Что я наделал? Я сломал Qt? Ты чуть не удалил интернет! 8)Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 24, 2013, 17:46 суровый дефайн конечно… нет, ты ничего не сломал, но изменил библиотеку. это значит, что никто другой не сможет скомпилировать твой код без внесения таких же правок в библиотеку.
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 24, 2013, 17:59 Наконец то дошло про Sleep с большой буквы. Спасибо. Туповат я немного... А как теперь библиотеку назад починить?
Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 24, 2013, 20:05 вернуть метод назад в секцию protected очевидно
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Май 24, 2013, 20:23 вернуть метод назад в секцию protected очевидно Да эт понятно, но как эту библиотеку на экран вернуть? Ошибки больше нет, Qt её не показывает...А вообще удивительно, что Qt так легко позволяет библиотеки Название: Re: Вторая форма в проекте. Отправлено: kambala от Май 24, 2013, 20:40 Qt4\include\QtCore\qthread.h или Qt5\qtbase\include\QtCore\qthread.h
заголовочные файлы никак жестко не связаны со скомпилированными библиотеками, поэтому их и можно редактировать не ломая внутренностей. и Qt тут вовсе не при чем — это особенность языка. Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 14:50 Получается примерно такая прога - игра Морской Бой. На картинке раненые, убитые и целые корабли. Пара вопросов:
1. Когда я кликаю мышкой на форму, она становится активной - границы подкрашиваются и тень появляется. Можно ли переключать это программно? SetFocus() не помогает. 2. Клики мышкой на форме (сигналы) накапливаются, а мне хотелось бы обрабатывать только нужные. Как удалить лишние? Гдето ведь видел, когда понадобилось никак не могу найти. Название: Re: Вторая форма в проекте. Отправлено: kambala от Июнь 05, 2013, 16:52 1. QWidget::activateWindow() и/или QWidget::raise()
2. disconnect() Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 19:38 Со вторым пунктом непонятно. Попробую объяснить, что я хочу. В начале игры ожидается ход человека - клик мышкой в игровое поле компьютера. При клике вызывается функция:
Код
которая помещает в глобальные переменные координаты клика и запускает функцию processGame(), что и есть собственно игра. Там анализируется ход, и в зависимости от результата (попал, мимо, ошибка) ход либо передаётся компьютеру, либо возвращается человеку (при этом set_Action = 2). Блокировка if(set_Action != 2) {Beep(4000, 500); return;} не работает - клики мышкой всё равно помещаются в какую-то очередь, дожидаются когда set_Action станет равным 2 и осуществляется ход человека. Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 05, 2013, 19:47 слот, подписанный на processGame() работает в главном потоке приложения? Если да, то никто не ждет пока set_Action станет равным 2, события просто ждут своей очереди пока слот не закончит выполнение
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 20:18 Да, у меня только один поток. Но в set_Action я ставлю двойку, только когда нужно отдать ход человеку. А в остальное время там 0, который прописывается в самом обработчике событий мышки. Поэтому при "лишних" кликах я ожидаю звуковой сигнал и выход из обработчика без каких-либо действий по строчке:
Код
Но этого не происходит. Нигде в программе в set_Action ошибочно двойки не записываются, я поиском проверял. Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 20:28 Блин, дошло почему. Управление из processGame обратно в обработчик мыши возвращается, и новый клик не обрабатывается, пока старый не обработан. Вот они и ждут где-то в очереди.
А чё делать? А если не processGame вызвать, а таймер, а из таймера уже processGame - управление всё равно в обработчик мыши вернётся? Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 05, 2013, 20:43 processGame долго выполняется? Кстати, если это просто метод, то зачем возле него emit? Сбивает с толку
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 21:21 processGame выполняется долго - там специально паузы вставлены, иначе игры не получится. emit - потому что processGame сигнал и связан со слотом void Widget::proc_Game() на другой форме. Программа состоит из 3-х форм, они все связаны, в двух формах игровые поля компа и человека, а в третьей основной - индикаторы, сколько у кого кораблей убито.
Взаимодействие между формами с помощью сигналов и слотов, мне тут так подсказали. Поэтому я и в непонятках. Я то думал: кликнул мышкой - выскочило прерывание мышки - отправило сигнал для продолжения игры на другую форму - и на этом прерывание мышки закончилось. А получается что не так. Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 05, 2013, 21:24 Пока выполняется твой proc_Game() все остальное стоит, поэтому все входящие события от системы накапливаются в очередь. Зачем там паузы? Какую роль они играют?
Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 05, 2013, 21:28 mousePressEvent это не прерывание, это метод, и отрабатывает он в главном потоке. Поэтому пока главный поток занят он отработать не может
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 21:33 Ну да, стоит, ну да - накапливаются, и что с этим делать? Я вообще то думал, что прерывание мышки при каждом клике сразу возникает, не дожидаясь пока там где-то что-то кончится - поэтому и пытался его "зареторнить", когда оно не вовремя. Но так не работает. Но в других то програмах это как-то обходят? Те же шахматы - если я 10 раз кликну по доске, пока компьютер думает - он мои клики проигнорирует.
Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 05, 2013, 21:35 Выноси долгие рассчеты в отдельный поток. а основной пусть отвечает на мышку и игнорирует ее когда не надо
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 21:41 Зачем там паузы? Какую роль они играют? Ну как же? Я кликаю мышкой в поле компа, если сразу появляется результат (попал-мимо) то уже некрасиво - нужны паузы. Клик - через паузу (0,8 сек у меня Sleep(800)) не экране результат появляется, ещё через паузу ход компу отдаётся (если мимо) - активируется форма поля человека - пауза - туда комп ходит - пауза - либо попал и продолжает ходить, либо отдаёт ход челу - активируется форма компа. Без пауз всё будет происходить мгновенно и ничего не понятно будет. Добавлено: какие там долгие рассчёты в морском бое "С2 ранен В2 убит"? Паузы исскуственные с помощью Sleep(). Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 05, 2013, 21:44 Sleep() тормозит твой основной поток и ничего в это время не обрабатывается. Рассчитай текущее действие, взведи таймер. По таймеру отрисуй результат на экране и рассчитай следующее действие и взведи таймер. Если надо передать ход человеку, то таймер не взводи. Во время работы таймера приложение сможет отвечать на внешние раздражители, в отличие от Sleep()
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 22:04 Блин, со слипами уже всё работает, и теперь всё переделывать, таймер прикручивать?
Код
Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 05, 2013, 22:04 Ну можешь не переделывать и наслаждаться окнами, зависшими на несколько секунд
Но я бы не называл это "все работает" Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 22:17 Окна не зависают. Просто если кликать мышкой чаще положенного - начинается путаница: компьютер походил, человек походил и уже непонятно кто, куда, чей счас ход, нада кликать или ждать, пока старые клики пройдут. Несолидно.
Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 05, 2013, 22:19 Окна зависают, можешь проверить. Во время этих слипов они ни на что не реагируют. Ну и концептуально это тоже неправильно. Но вообще хозяин барин
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 05, 2013, 22:51 Ну по крайней мере они перерисовываются, если другим окном по ним ездить. Да не, я переделаю конечно, тока теперь надо в таймере разбираться.
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 00:46 Фигня какая!!! Я рэндом из qrand() сваял:
Код
Я и слип из таймера и глобальной переменной замастырю. В переменную число нужное вставляем, например 8, а по слотам таймера каждые 100мс единичку вычитаем до нуля - получите 0,8 сек. И программу переделывать будет ненада... поменять только Sleep на Pauza Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 06, 2013, 08:25 А зачем 8 раз по 100мс? Почему не один раз на 800мс таймер завести?
В чем фишка с рандомом я вообще не понял... Так в любой доке написано Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 13:32 У меня уже был морской бой на билдере написан, алгоритмы игры я взял оттуда. В билдере рэндом, в Qt куранд, чтобы не менять по всей программе я сделал рэндом из куранда.
С паузой сложнее. Я конечно могу аналог слипа сделать, но что-то мне подсказывает, что он будет точно так же тормозить комп - нужно в цикле ждать, прошло ли 0,8 сек. Честно говоря я в затруднении. Сам принцип построения игрового процесса (простой и понятный со слипами) с таймером что-то пока не вырисовывается. 1. Программа ждёт клика мышкой по полю. Где имено и как она это делает - мне неизвестно. 2. Клик - вызывается mousePressEvent 3. mousePressEvent эмитирует сигнал, который связан со слотом игрового процесса. В зависимости от игровой ситуации либо ходит комп, либо return - и ждём следующего клика по полю (хода чела). Теперь с таймером. mousePressEvent запускает таймер? Ну запустили - сам игровой процесс в onTimeout чтоли впихивать? Он же каждый период времени выскакивает... ну допустим я при первом включении таймер сразу остановлю. Пошла игра, дошла до первой необходимости сделать временную задержку - снова включать таймер? Так он и включит onTimeout сначала, а зачем мне сначала? Мне нужно с того места, где я паузу делал. С помощью глобальной переменной запоминать, с какого места начинать в очередной раз? Во геморой то блин! Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 06, 2013, 13:49 Нажал кнопку - рассчитал следующее действие, запомнил что сделать надо, запустил таймер, вышел из функции.
Пришел таймаут - выполнил текущее действие, рассчитал следующее, в очередь записал, запустил таймер, вышел из функции Пришел таймаут - см. выше Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 14:18 Что значит рассчитал - выполнил? Это если действия однотипные: рассчитал картинку на экране - сбросил в буфер, при следующем таймере вывел буфер на экран, и рассчитываешь следующую картинку. Это только для мультиков годится.
Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 06, 2013, 14:19 не обязательно там должны быть однотипные действия. Но вообще делай как хочешь
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 14:52 Да не в том дело, как хочешь, а как правильно? Я сделал уже как хочу и результат меня не устраивает. Хотя игра и заиграла, что уже неплохо.
Как это необязательно однотипные действия, если раз за разом вызывается одна и та же функция таймера, и управление всегда передаётся в начало? Поэтому я и написал - в зависимости от игровой ситуации управление передавать в нужную точку (и эту точку хранить в памяти между вызовами таймера) - чтобы действия были неоднотипными. Ну в общем направление мыслей понятно, осталось реализовать. Кстати, в билдере нет сигналов-слотов, я там строил игровой процесс таки в таймере. Но я вызывал его один раз, и весь ход проходил в нём, а паузы делал старыми добрыми слипами. Может поэтому там с выводом картинок проблемы были, какие-то пустые квадратики проскакивали время от времени - некрасиво. Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 06, 2013, 15:03 Что мешает запоминать тип действия и необходимые параметры, а в таймауте выполнять действие, соответствующее типу?
Название: Re: Вторая форма в проекте. Отправлено: Igors от Июнь 06, 2013, 15:11 Да не в том дело, как хочешь, а как правильно? Правильно придерживаться событийной схемы (event-driven), никакого геморроя там нет. Да, запоминать текущее состояния, выполнять квант работы и снова ждать события. Это нормально, все так или иначе расстаются с "удобным" sleep'ом, не затягивайтеНазвание: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 15:18 Что мешает запоминать тип действия и необходимые параметры, а в таймауте выполнять действие, соответствующее типу? :) я не умею в программе выполнять действия, я умею вызывать функции, которые выполняют разные действия.Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 06, 2013, 15:28 Что мешает запоминать тип действия и необходимые параметры, а в таймауте выполнять действие, соответствующее типу? :) я не умею в программе выполнять действия, я умею вызывать функции, которые выполняют разные действия.Код: switch(actionType) Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 16:20 А это не одно и то же? Всё равно в результате разные функции вызываются.
У меня всё осложняется необходимостью преключения между игровыми полями - в морском бое (в отличие от примитивных шахмат) их целых два. И переключение не мгновенное - неактивное ещё и прозрачное на 0.8, и при переключении эта прозрачность "перетекает" из одного окна в другое - так красиво, и отказываться от этого я не собираюсь. Бум работать. Название: Re: Вторая форма в проекте. Отправлено: Kurles от Июнь 06, 2013, 16:47 Фигня какая!!! Я рэндом из qrand() сваял: если так уж хочется паузу в процедурах:Код
Я и слип из таймера и глобальной переменной замастырю. В переменную число нужное вставляем, например 8, а по слотам таймера каждые 100мс единичку вычитаем до нуля - получите 0,8 сек. И программу переделывать будет ненада... поменять только Sleep на Pauza Код Более-менее правильная Qt реализация. Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 17:02 Wow! Спасибо огромное! Ща сразу и пропробуем...
Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 06, 2013, 17:16 А это не одно и то же? Всё равно в результате разные функции вызываются. Не одно и то же с чем? С твоими слипами не одно и то же Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 18:31 pause рулит!!! Всё заработало!
Последний штрих остался. Нужно, чтобы по нажатию кнопки все три формы одновременно минимизировались на панель задач, и обратно - при клике на любой форме восстанавливались. Какие там сигналы они испускают при минимизации и восстановлении? Название: Re: Вторая форма в проекте. Отправлено: Igors от Июнь 06, 2013, 19:01 Какие там сигналы они испускают при минимизации и восстановлении? Не привыкайте спрашивать на форуме не заглянув в доку - верный путь нарваться на неприятностиНазвание: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 06, 2013, 21:08 Как туда заглянуть? Меня интересуют сигналы, которые генерирует форма в разных ситуациях.
Название: Re: Вторая форма в проекте. Отправлено: kambala от Июнь 06, 2013, 21:16 сигналы никакие не испускаются, вызываются события. открываешь QEvent и читаешь какие есть события, нужные перехватываешь.
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 09, 2013, 09:52 Примерчик можете привести, где события вызываются и перехватываются? Или ссылку на пример, а то чего то не очень понятно...
Название: Re: Вторая форма в проекте. Отправлено: kambala от Июнь 09, 2013, 11:15 Код
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 09, 2013, 14:28 Куда это вставлять? В конструктор формы? В заголовочный файл писать что-нибудь надо? Библиотеки подключать?
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 12, 2013, 12:51 Чтобы 3 формы на экране расположились "правильно", я в конструктор написал вот так:
Код
но это привело к тому, что формы теперь не хотят мышкой перемещаться по экрану - стоят на своих местах как вкопанные. Это можно как-то исправить? И дальше - мне желательно, чтобы при перемещении главного окна, вспомогательные его сопровождали. Какое событие вызывается, когда юзер перемещает форму мышкой? Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 12, 2013, 12:58 Почему ты не хочешь читать документацию?
http://doc.qt.digia.com/4.7/qwidget.html#moveEvent Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 12, 2013, 13:32 Почему ты не хочешь читать документацию? Для того, чтобы произошло moveEvent, мне надо как-то сдвинуть их с места.http://doc.qt.digia.com/4.7/qwidget.html#moveEvent Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 12, 2013, 14:31 Это был ответ на твой второй вопрос
Название: Re: Вторая форма в проекте. Отправлено: Alexu007 от Июнь 13, 2013, 13:54 Как в программе воспроизвести системные звуки?
Название: Re: Вторая форма в проекте. Отправлено: mutineer от Июнь 13, 2013, 13:55 Как в программе воспроизвести системные звуки? Если этот вопрос не влияет на вторую форму в проекте, то советую создать новую тему, поможет потом при поиске |