crossplatform.ru

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

Maksus
  опции профиля:
сообщение 7.5.2009, 22:12
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 14.4.2009
Пользователь №: 679

Спасибо сказали: 0 раз(а)




Репутация:   0  


Создаю главное окно с QMdiArea.
Создаю окно-виджет на базе QWidget.
Добавляю smdi = ui->mdiArea->addSubWindow(widg);

Отображается только часть окна, область размером с заголовок этого дочернего окна. Через эту область перемещая окно можно посмотреть его полностью, оно прорисовано правильно. Но почему отображается только часть окна через этот четырехугольник, как показать всё? Помогите, плиз.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Гость_LS_*
сообщение 14.5.2009, 13:42
Сообщение #2





Гости








    


Очередной раз вижу эту проблемку. Здесь дело в "плохом стиле". Я знаю, как это поправить - модификация qwindowsxpstyle.cpp - но на этом дело не кончится, т.к. кнопки min, max, close будут рисоваться плохо, и по моему, это уже не лечится, надо менять MDI подход в самом QT.
Поправить: QWindowsXPStyle::styleHint() case SH_WindowFrame_Mask:
заменить
mask->region = d->region(themeData);
на
SIZE sz;
    themeData = XPThemeData(widget, 0, QLatin1String("WINDOW"), WP_MINCAPTION, CS_ACTIVE, option->rect);
    if (!(titlebar->titleBarState & Qt::WindowMinimized)) {
        themeData.partId = WP_CAPTION;
        sz.cy = ::GetSystemMetrics(SM_CYCAPTION) + ::GetSystemMetrics(SM_CXSIZEFRAME);
        themeData.rect.setHeight(sz.cy);
    }
    else
        sz.cy = themeData.rect.height();
    mask->region = d->region(themeData);
    QRect r(mask->region.boundingRect());
    if (0 > (sz.cx = sz.cy - r.height())) {
        r.setHeight(sz.cy);
        mask->region &= QRegion®;
        sz.cx = 0;
    }
    if (sz.cx += option->rect.top() - r.top())
        mask->region.translate(0, sz.cx);
    r = option->rect;
    r.setTop(r.top() + sz.cy);

    if (!(titlebar->titleBarState & Qt::WindowMinimized)) {
        themeData.partId = WP_FRAMEBOTTOM;
        themeData.rect.setBottom(r.bottom());
        if (SUCCEEDED(pGetThemePartSize(themeData.handle(), 0, themeData.partId, themeData.stateId, 0, TS_TRUE, &sz))) {
            themeData.rect.setTop(r.bottom() - sz.cy + 1);
            r.setBottom(r.bottom() - sz.cy);
        }
        mask->region |= d->region(themeData);

        themeData.partId = WP_FRAMELEFT;
        themeData.rect = r;
        if (SUCCEEDED(pGetThemePartSize(themeData.handle(), 0, themeData.partId, themeData.stateId, 0, TS_TRUE, &sz))) {
            themeData.rect.setWidth(sz.cx);
            r.setLeft(r.left() + sz.cx);
        }
        mask->region |= d->region(themeData);

        themeData.partId = WP_FRAMERIGHT;
        themeData.rect.setRight(r.right());
        if (SUCCEEDED(pGetThemePartSize(themeData.handle(), 0, themeData.partId, themeData.stateId, 0, TS_TRUE, &sz))) {
            themeData.rect.setLeft(r.right() - sz.cx + 1);
            r.setRight(r.right() - sz.cx);
        }
        mask->region |= d->region(themeData);
    }

    mask->region &= QRegion(option->rect);
    if (!r.isEmpty())
        mask->region |= QRegion®;
Причина редактирования: используй тэг code
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Maksus   Трабл с QMdiArea   7.5.2009, 22:12
- - Litkevich Yuriy   непонятно. Давай код (пример %QTDIR%\examples...   7.5.2009, 22:20
|- - Maksus   Цитата(Litkevich Yuriy @ 7.5.2009, 22:20)...   7.5.2009, 22:46
- - Litkevich Yuriy   Цитата(Maksus @ 8.5.2009, 2:33) Именно та...   7.5.2009, 22:52
|- - Maksus   Цитата(Litkevich Yuriy @ 7.5.2009, 22:52)...   7.5.2009, 22:54
- - Litkevich Yuriy   Попробуй установить тему оформления самого виндово...   7.5.2009, 23:01
- - Maksus   Да, действительно, это из-за темы. Что ж делать? Н...   7.5.2009, 23:50
- - igor_bogomolov   Цитата(Maksus @ 8.5.2009, 0:50) Неужели с...   8.5.2009, 0:30
- - Litkevich Yuriy   igor_bogomolov, помоему с дизайнером такие же проб...   8.5.2009, 7:39
|- - Maksus   Цитата(Litkevich Yuriy @ 8.5.2009, 7:39) ...   8.5.2009, 8:09
- - igor_bogomolov   У меня у самого тема не родная под XP стоит. В Qt ...   8.5.2009, 12:36
- - Maksus   Кстати, при закрытии дочернего окна (крестиком) ун...   9.5.2009, 14:02
|- - DmP   Цитата(Maksus @ 9.5.2009, 15:02) Кстати, ...   9.5.2009, 16:53
- - Maksus   Почему может не работать ui->mdiArea->addSub...   9.5.2009, 23:53
- - kwisp   Maksus, что значит не работает - валится? или нич...   10.5.2009, 17:37
|- - Maksus   Цитата(kwisp @ 10.5.2009, 17:37) Maksus, ...   10.5.2009, 18:20
- - kwisp   Maksus, зачем тебе delete? попробуй ему close() с...   10.5.2009, 18:35
|- - Maksus   Цитата(kwisp @ 10.5.2009, 18:35) Maksus, ...   10.5.2009, 20:13
- - kwisp   Цитата(kwisp @ 10.5.2009, 19:35) код пока...   10.5.2009, 20:32
- - LS   Очередной раз вижу эту проблемку. Здесь дело в ...   14.5.2009, 13:42


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 25.6.2025, 1:48