Russian Qt Forum
Июнь 16, 2024, 02:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 89 90 [91] 92 93 ... 96
1351  Qt / Общие вопросы / можно ли хранить и как отображать многострочный текст в QString? : Май 06, 2010, 09:26
есть некий суперкласс, который сам наследует QGraphicsItem, и от которого наследуют несколько классов, реализующих изображаемые на сцене объекты, в инстансе суперкласса, в поле QString содержатся наименования этих объектов, и там все пучком работает

но появилась необходимость добавить комментарии, есть смысл наследовать тот же суперкласс, поскольку в остальном комментарии по поведению очень похожи на реализованные объекты, а в суперклассе уже есть поле класса QString, то есть соблазн в него же уложить комментарии

но! комментарии должны быть многострочные, поэтому прежде чем браться за их реализацию таким способом, хочу выяснить для себя несколько вопросов, поскольку с таким использованием QString пока не сталкивался

- как в QString хранятся esc-символы, особенно перевод строки? достаточно ли просто уложить туда строку с '\n' и оно там будет нормально лежать? а что насчет `\t`?
- как подсчитать размер boundingRect для такой строки? есть ли уже готовое средство для такого подсчета, учитывающее `\t` и `\n`, или надо самому лазить по строке и считать количество видимых строк, табуляции etc?
- как будет выполняться отрисовка такой строки при вызове ((QPainter*)painter)->drawText(...); с установленными метриками и заданным прямоугольником? будет ли `\n` распознаваться как полный перевод строки с возвратом каретки? или как пробел? или только как перевод строки, без возврата каретки? будет ли распознаваться `\t`? на какой шаг табуляции?

просто хочу это все выяснить, чтобы четко понять, что надо делать, и куда-нибудь не вляпаться, и не пришлось потом переделывать
1352  Qt / Общие вопросы / Re: какой виртуальный метод вызывается после передачи сигнала? : Апрель 30, 2010, 13:00
Цитировать
1) Чем тебе не нравятся предложенные варианты. Поясни.

тем, что в них приходится над штатными средствами Qt морочить еще надстройку, и не забывать ее использовать

Цитировать
2) Уточни что за обработка ошибок, в каких случаях, ...

библиотека написана на С, там просто устанавливается код ошибки, и даже не всегда возвращается false, то есть, надо после вызова функции проверять глобальную переменную на 0, надстройка над этой библиотекой написана на С++, и с Qt никак не связана, дополнительные функции просто также устанавливают код ошибки в этой же переменной - поэтому самое последнее предложение высылать сигнал не проходит в принципе

слоты - это простые короткие переходники, которые получают сигналы и вызывают функции библиотеки или надстройки над ней

среднее предложение, высылать сигнал сразу после высылки основного тоже не годится, потому как подавляющее большинство сигналов высылаются виджетами, созданными в QtDesigner, и кроме этого, сигналов гораздо больше, чем слотов - поэтому более кошерно сделать простое макро типа

Код:
#define returnSlot {GloballErrorMessage();return;}

где глобальная функция GloballErrorMessage() проверяет наличие кода ошибки, если он есть, выдает сообщение, и сбрасывает код в 0 - и использовать в конце каждого слота этот макрос вместо return - единственный минус тут - не забыть, что надо писать не return - хотя это конечно тоже хак...

но тут другой момент... вроде бы получается перевести все слоты в один объект, наследующий QMainWindow, а там вроде есть подходящий обработчик
1353  Qt / Общие вопросы / Re: какой виртуальный метод вызывается после передачи сигнала? : Апрель 29, 2010, 18:56
Тип соединения у тебя DirectConnection. Значит, на следующей строчке после emit слот уже выполнится. Вот и посылай после первого сигнала второй, что сигнал обработан.

откуда посылать? из слота? из функции, делающей emit? слотов несколько десятков, мест для emit еще больше, и на множество слотов сигналы идут из меню приложения, от разных кнопок и прочих виджетов, созданных в QtDesigner
1354  Qt / Общие вопросы / Re: какой виртуальный метод вызывается после передачи сигнала? : Апрель 29, 2010, 15:53
че-то не нравится ни один предложенный вариант  Грустный

лучше всего, если бы можно было переопределить приложение, а там виртуальный метод что-нибудь вроде AfterSignalProcessed(), который вызывается каждый раз, когда завершился любой обработчик любого сигнала

такого нет?
1355  Qt / Общие вопросы / какой виртуальный метод вызывается после передачи сигнала? : Апрель 29, 2010, 14:42
вопрос в заголовке возможно не очень прозрачен, поэтому пояснение:

есть приложение с меню и кнопками на тулбарах, пункты меню посылают сигналы туда, куда подключены

слоты-приемники сигналов вызывают разнообразную внутреннюю обработку данных, во время которой могут происходить различные ошибки, код которых устанавливается в глобальной переменной

после обработки сигналов необходимо выдавать сообщение об ошибке, при этом более чем в половине случаев невозможно выдать это сообщение, поскольку код устанавливается библиотечными функциями

можно в каждый приемник сигнала влепить выдачу сообщений об ошибке после обработки любого сигнала - но это очень не красиво, поскольку слотов для приема сигнала десятки, и при добавлении каждого нового потребуется выдача такого сообщения

каким образом можно получить управление после того, как любой сигнал был обработан его приемником, независимо от того, откуда он был послан? все описанные сигналы и приемники находятся в одной нити приложения, но сигналы посылаются разными объектами
1356  Qt / Qt-инструментарий / Re: Немного расстроил QtCreator 2 : Апрель 23, 2010, 08:12
-1

исходники принадлежат предприятию, и согласно техническому заданию, должны содержать комментарии на русском языке, чтобы при необходимости другой программист смог легко разобраться

извиняюсь за оффтопик, не я начал...
1357  Qt / Qt-инструментарий / Re: Немного расстроил QtCreator 2 : Апрель 22, 2010, 09:26
а что слышно - в редакторе комментарии на русском языке в Unicode когда-нибудь перестанут портиться?? или это можно где-то настроить? в Параметрах такого не видать, может какой-то ключ при запуске есть?

достало уже... используются файлы с комментариями, набранными в Студии - в креаторе или 
Код:
// допустима только пеpеменная

или что еще хуже, невосстановимые

Код:
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅpпїЅпїЅпїЅпїЅpпїЅ
1358  Qt / Пользовательский интерфейс (GUI) / Re: в QLineEdit с утра курсор потерялся... : Апрель 19, 2010, 10:34
неа, нигде ведь не сказано, что надо... и раньше был курсор

вызвал... появился...

спс...
1359  Qt / Пользовательский интерфейс (GUI) / в QLineEdit с утра курсор потерялся... : Апрель 19, 2010, 10:02
есть класс, наследующий QLineEdit, почти полностью, конструктор пустой, только переписаны keyPressEvent(), focusInEvent() и focusOutEvent()

все прекрасно работало, как-то не обращал внимания, изначально курсор был при попадании фокуса в редактор строки

и вдруг пропал...  Непонимающий

получается, он вроде как "автоматический", и если специально о нем не позаботиться, то не предсказуем? однако даже забота не привела к его появлению - вызываю setCursor(Qt::IBeamCursor); откуда либо, хоть из конструктора, хоть из focusInEvent() - по барабану, курсор не появляется...

или я описание QWidget с утра плохо читаю и не вижу решения, или тут какая-то собака порылась... кто-нибудь подскажет, куда смотреть?
1360  Qt / Пользовательский интерфейс (GUI) / Re: как покинуть перекрытый элемент, входя в перекрывающий? : Апрель 12, 2010, 13:50
не, барахло получается...

написал запрос на багтрекере, поддержите плз
1361  Qt / Пользовательский интерфейс (GUI) / Re: как покинуть перекрытый элемент, входя в перекрывающий? : Апрель 12, 2010, 10:57
ха! так оно еще и не так банально по-умолчанию работает

при входе в перекрывающий элемент, если он дитя перекрытого, вызывается не только его метод входа, но и метод входа у родителя... блин

Цитировать
Подсвечивать его надо в момент ховер энтрер, при этом предыдущий подсветку убирать

ну и как узнать, у кого убирать подсветку? тупо у "родителя" - не годится

остается только получение списка коллизий, и убирать подсветку у всех перекрытых, но при этом находятся не под курсором...

потому как при выходе из перекрывающего в перекрытый, последний должен засветиться, а перекрывающий погаснуть

так что не "1 переменная и 2 проверки"
1362  Qt / Пользовательский интерфейс (GUI) / Re: как покинуть перекрытый элемент, входя в перекрывающий? : Апрель 12, 2010, 10:34
в прицнипе, можно, но надо тогда выяснять, какие из перекрытых айтемов перекрыты частично, поскольку если въехать в перекрывающий "с другой стороны", то с перекрытыми ничего делать не надо, а если въехать над кем-то, то делать надо только с одним перекрытым, со стороны которого собственно въехали

в общем, глупая колбаса пока получается, с какой стороны ни подойти  Злой

хотя должен быть просто флаг "айтем монополизирует ховер", который если взведен, все это проделывает на уровне тулкита

задача ведь достаточно часто встречающаяся...
1363  Qt / Пользовательский интерфейс (GUI) / Re: как покинуть перекрытый элемент, входя в перекрывающий? : Апрель 12, 2010, 09:56
сейчас при наезде на перекрывающий, вызывается только его метод hoverEnterEvent(), при этом мы остаемся "над" перекрытым, из его пространства мы не выходим (наверняка, если итемы частично перекрыты, то возможна ситуация, когда останемся над перекрывающим, но выйдем из перекрытого)

по-умолчанию работает правильно "с геометрической точки зрения", но мне надо выйти из перекрытого, чтобы его по-другому отрисовать, поскольку уже не он, а перекрывающий будет принимать мышиные клики и пр.
1364  Qt / Пользовательский интерфейс (GUI) / как покинуть перекрытый элемент, входя в перекрывающий? : Апрель 12, 2010, 09:14
утром в понедельник не могу сразу сообразить, как сделать, чтобы если айтем полностью или частично перекрыт другим айтемом (например, перекрывающий меньше перекрываемого), то при пересечении границы перекрывающего, чтобы у перекрываемого сначала вызывался hoverLeaveEvent(), а потом вызывался hoverEnterEvent() перекрывающего

вроде по описанию похож флаг ItemClipsToShape, но он работает совершенно иначе

иначе, кроме как влоб самому вызывать при в методе входа потомка метод выхода у его родителя - ничего не видно

наверно есть другой флаг какой-то, но с недосыпа не вижу  Грустный

...

ага, фик, влоб в реализованной схеме наследования просто сделать

Код:
	if( parentItem() )
parentItem()->hoverLeaveEvent(event);

нельзя, ругается, что этот метод protected, придется ломать все Грустный

и если перекрывающий айтем начнет двигаться, то вообще бред получается, надо руками отслеживать на кого он потом может наехать, в зависимости от его положения в стеке и т.д.  Злой

должен же быть флаг для таких случаев...
1365  Qt / 2D и 3D графика / Re: есть у QPainter возможность отключить буферизацию? : Апрель 09, 2010, 21:11
это репаинт на каждый чих надо вызывать... не кошерно...  Грустный
Страниц: 1 ... 89 90 [91] 92 93 ... 96

Страница сгенерирована за 0.059 секунд. Запросов: 24.