crossplatform.ru

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


  Ответ в вопрос по QGroupBox
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 10 сообщений [ в обратном порядке ]
igor_bogomolov Дата 8.5.2014, 15:53
  Это из-за того, что под индикатором радиобаттона живет своей жизнью индикатор чекбокса. Он не затирается полностью. По крайней мере не под всеми стилями.
Попробуй заменить строку
px.fill (this, option.rect.left(), option.rect.top());
на
px.fill(option.palette.color(QPalette::Window));
Если не поможет, придётся отказываться от drawComplexControl и отрисовывать его самому. Как это делать смотри в исходниках. Проблема только в том, что отрисовка от стиля зависит.
DAVID Дата 8.5.2014, 10:57
  В итоге создал такой класс:
class RadioGroupBox : public QGroupBox
{
    Q_OBJECT
 
public:
 
    RadioGroupBox (const QString &QS_ob, QWidget *parent = 0):
        QGroupBox (QS_ob, parent)
    {
        setCheckable (true);
        connect (this, SIGNAL (clicked ()), SLOT (slot_for_clicked ()));
    }
 
    void paintEvent (QPaintEvent *event)
    {
           QStylePainter paint (this);
           QStyleOptionGroupBox option;
           initStyleOption (&option);
 
           paint.drawComplexControl (QStyle::CC_GroupBox, option);
 
           option.rect = style()->subControlRect (QStyle::CC_GroupBox, &option,
                                                  QStyle::SC_GroupBoxCheckBox, this);
           paint.save();
           QPixmap px (option.rect.width(), option.rect.height());
           px.fill (this, option.rect.left(), option.rect.top());
           QBrush brush (px);
           paint.fillRect (option.rect, brush);
           paint.restore();
 
           paint.drawPrimitive (QStyle::PE_IndicatorRadioButton, option);
    }
 
private slots:
 
    void slot_for_clicked ()
    {
        if (! isChecked()) setChecked (true);
    }
};

Однако когда курсор мыши попадает в область переключателя происходит мерцание.
Как это можно исправить?
igor_bogomolov Дата 7.5.2014, 23:14
  http://www.forum.crossplatform.ru/index.ph...c=6035&st=0
DAVID Дата 7.5.2014, 20:14
 
 Р В Р’ Р’ Р’ Р’ Р’ Р’ Р’ Р’ Р’ Р’˜Р В·Р С•бражение уменьшено
Прикрепленное изображение
239 x 181 (6.44 килобайт)

Вот как на этом изображении, только вместо обычной кнопки нужна радио кнопка
DAVID Дата 7.5.2014, 19:01
  Вопрос такой: можно ли создать QGroupBox с функцией радио кнопки. С функцией обычной кнопки я делаю так:
qGB_ob1 = new QGroupBox(tr ("Yes"));
qGB_ob1->setCheckable (true);
qGB_ob1->setChecked (false);
... ... ...

но кнопка нужна как у QRadioButton
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 2:56