crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Нужны идеи как реализовать поведение собственного виджета
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 24.4.2010, 0:25
 
Цитата(SABROG @ 24.4.2010, 3:28) *
- нужно точно прицеливаться в уголок, чтобы курсор мышки не попадал на пользовательский виджет. Для этого сделаны отступы. fail
можно положить в угол прозрачный виджет, навёл на него мыша, "уголок бумаги" отогнулся, как сделано в некоторых типах веб рекламы

Цитата(SABROG @ 24.4.2010, 3:28) *
- пользовательский виджет скрывается, чтобы освободить место для рисования на background'e под ними (на wrapper'e). fail
опять же можно рисовать на наложеном поверх {полу}прозрачном виджете
SABROG Дата 23.4.2010, 23:28
  Опяньки, гуляем мужики :lol:



void Folder::updateCache()
{
    //A lot faster than grabWidget because it doesn't actually
    // paint the widget, just grabs its backing store
    QPaintDevice *back = windowSurface()->paintDevice();
    QPixmap *px = dynamic_cast<QPixmap*>(back);
    if (px) {
        m_foldCache = *px;
    }
}


Угумс.

    QWidget *w1 = new QWidget;
    Ui_AppearanceConfigWidget *form1 = new Ui_AppearanceConfigWidget;
    form1->setupUi(w1);

    QWidget *w2 = new QWidget;
    Ui_EditConfigWidget *form2 = new Ui_EditConfigWidget;
    form2->setupUi(w2);

    m_first->setWrapper(w1);
    m_second->setWrapper(w2);


Врапперы, хмм.

Короче принцип у них такой.

- QWindowSurface используется, чтобы быстро сграбить окно. accept
- нужно точно прицеливаться в уголок, чтобы курсор мышки не попадал на пользовательский виджет. Для этого сделаны отступы. fail
- пользовательский виджет скрывается, чтобы освободить место для рисования на background'e под ними (на wrapper'e). fail

Откуда растут "ноги" у двух последних решений и почему fail:

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

В Qt нет стандартной возможности рисовать родительскому виджету поверх всех своих детей. Отсюда уловка с сокрытием пользовательского виджета. Они конечно могли обойти это, но код бы серьезно вырос. У меня была надежда на бажный QGraphicsEffect о котором я запостил багрепорт и только через 10 дней тролли попросили меня предоставить компилируемый проект с демонстрацией проблемы. Затем они перевели багрепорт с "Paint system" на "Graphics view", что меня еще больше расстроило. Если они зарубят на корню возможность использовать QGraphicsEffect без графической сцены, то это меня сильно расстроит.

Собственно никакой магии в демке не оказалось. Без того же QWindowSurface в ней вполне реально обойтись. По крайней мере я теперь хоть знаю, что мыслил правильно и все мои догадки подтвердились.
Litkevich Yuriy Дата 23.4.2010, 21:42
  Хе-хе-хе. А я оказывается ещё тот куркуль. :blum1:

У меня есть рабочая копия их хранилища, в состоянии 902 версии. Залил на наш FTP
Litkevich Yuriy Дата 15.4.2010, 16:40
 
Цитата(igor_bogomolov @ 15.4.2010, 20:22) *
Может где то в ихнем блоге поинтересоваться где можно исходнички взять?
запостил в форум, голосуйте/поддерживайте
SABROG Дата 15.4.2010, 16:29
 
Цитата(igor_bogomolov @ 15.4.2010, 17:22) *
Может где то в ихнем блоге поинтересоваться где можно исходнички взять?

В комментах блога Zack'a просили, он чего-то молчит с 26 марта этого года.
igor_bogomolov Дата 15.4.2010, 16:22
 
Цитата
SVN-хранилище у них не работает больше, переехали в Git, но в git'е нет таких каталогов
Может где то в ихнем блоге поинтересоваться где можно исходнички взять?
Litkevich Yuriy Дата 15.4.2010, 16:15
  SVN-хранилище у них не работает больше, переехали в Git, но в git'е нет таких каталогов
:(
SABROG Дата 15.4.2010, 16:14
 
Цитата(igor_bogomolov @ 15.4.2010, 17:01) *
Может это как раз ссылки на исходники

Насколько я знаю этот svn не работает. Проверить сейчас нет возможности. Когда я там пытался найти давно первый пример для box2d, то его не было.
igor_bogomolov Дата 15.4.2010, 16:01
  Ух ты. Круть. Теперь я тоже хочу такое :)
Нужно найти способ сделать это без использования приватных классов. Иначе будут проблемы со сборкой под Linux

Тут есть ссылки на svn. К сожалению не могу проверить сейчас. Может это как раз ссылки на исходники
http://labs.trolltech.com/page/Graphics/Examples/Examples2
SABROG Дата 15.4.2010, 15:47
  Хочу такое http://zrusin.blogspot.com/2007/04/folding.html

только нигде нет исходников. Судя по всему используется QWindowSurface.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 15:47