crossplatform.ru

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

6 страниц V  < 1 2 3 4 5 > »   
Ответить в данную темуНачать новую тему
> QComboBox, Как задать размер выпадающего списка
Litkevich Yuriy
  опции профиля:
сообщение 6.1.2009, 6:11
Сообщение #21


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(trdm @ 6.1.2009, 6:27) *
Как думаете, нормально?
неа, декорацию окна убери
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 6.1.2009, 11:34
Сообщение #22


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


А по моему вполне себе ничего

Сообщение отредактировал molchanoviv - 6.1.2009, 11:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 6.1.2009, 11:58
Сообщение #23


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Titlebar с фреймом имхо не нужны, а так вполне.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 6.1.2009, 12:32
Сообщение #24


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


Цитата(Litkevich Yuriy @ 6.1.2009, 6:11) *
Цитата(trdm @ 6.1.2009, 6:27) *
Как думаете, нормально?
неа, декорацию окна убери

Какую декорацию?

Сообщение отредактировал trdm - 6.1.2009, 12:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 6.1.2009, 12:35
Сообщение #25


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


В окне выбора цвета убери шапку. Хотя по мне в ООо сделано с шапкой и ничего.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 6.1.2009, 14:33
Сообщение #26


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


Цитата(molchanoviv @ 6.1.2009, 12:35) *
В окне выбора цвета убери шапку. Хотя по мне в ООо сделано с шапкой и ничего.

убрал. чуток доточить надо, а так в принцыпе готово..

Сообщение отредактировал trdm - 6.1.2009, 14:33
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.1.2009, 15:18
Сообщение #27


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(trdm @ 6.1.2009, 15:32) *
Какую декорацию?
так называют рамку и, возможно, заголовок, которые рисует менеджер окон, чтобы пользователь мог управлять размером и положением окна. По буржуйски (frame & title = decoration)

Цитата(trdm @ 6.1.2009, 17:33) *
чуток доточить надо
ага, положи свой виджет на QFrame и поэксперементируй со стилем его границ.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 9.1.2009, 22:14
Сообщение #28


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


Что-то никак не соображу по какой методе комбобокс прячет свой попуп,
если пользователь щелкает вне виджета, который отрабатывает это событие.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.1.2009, 23:03
Сообщение #29


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Вообще за сокрытие попапов отвечает сам класс QWidget.

void QWidget::mousePressEvent(QMouseEvent *event)
{
    event->ignore();
    if ((windowType() == Qt::Popup)) {
        event->accept();
        QWidget* w;
        while ((w = qApp->activePopupWidget()) && w != this){
            w->close();
            if (qApp->activePopupWidget() == w) // widget does not want to dissappear
                w->hide(); // hide at least
        }
        if (!rect().contains(event->pos())){
            close();
        }
    }
}


Помимо кликов он отслеживает фокус всплывающих окон. Если фокус пропадает, то и окно закрывается (см. QWidgetPrivate::show_helper()).

void QComboBoxPrivateContainer::mousePressEvent(QMouseEvent *e)
{

    QStyleOptionComboBox opt = comboStyleOption();
    opt.subControls = QStyle::SC_All;
    opt.activeSubControls = QStyle::SC_ComboBoxArrow;
    QStyle::SubControl sc = combo->style()->hitTestComplexControl(QStyle::CC_ComboBox, &opt,
                                                           combo->mapFromGlobal(e->globalPos()),
                                                           combo);
    if ((combo->isEditable() && sc == QStyle::SC_ComboBoxArrow)
        || (!combo->isEditable() && sc != QStyle::SC_None))
        setAttribute(Qt::WA_NoMouseReplay);
    combo->hidePopup();
}


А ComboBox'у похоже все-равно когда закрываться куда ни кликни. По координатам мышки он определяет на какой элемент контрола (стрелка или еще что) был сделан клик и в зависимости от этого выставляет аттрибут Qt::WA_NoMouseReplay. В описании говорится:

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

Но вот что означает это "воспроизведено" (reply) не ясно.

Сообщение отредактировал SABROG - 9.1.2009, 23:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 10.1.2009, 0:13
Сообщение #30


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


Вот проектик:
Через попуп у меня не получился виджет, чего-то я не догоняю в этом деле.
Если выпадающему виджету установить Qt::Popup, то вопервых получается какое-то прозрачное оконце, которое не ловит paintEvent() и соответственно нефига не рисует.
Если брать текущую реализацию, то есть 2 момента.
Если виджет-родитель при открытом попупе перетащить или поместить вниз зет-ордера то окно попупа останется на экране.
Как правильно отработать момент не въеду пока.
Может кто чего сообразит?
Прикрепленные файлы
Прикрепленный файл  uoWidget.zip ( 9,28 килобайт ) Кол-во скачиваний: 130
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

6 страниц V  < 1 2 3 4 5 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 1.12.2024, 7:46