QApplication::postEvent правильно ли?

318
20 мая 2017, 19:50

Есть класс наследник QWidget, у которого есть виртуальный метод updateStyle(). Данный метод должен срабатывать при получение QEvent::StyleChange и один раз при конструирование формы. Просто вызвать виртуальный метод и конструктора класс нельзя, так как класс-наследник еще не создан. Чтоб это обойти я воспользовался методом QApplication::postEvent, в данном случае срабатывает updateStyle() класса-наследника как и задумывалось. Вопрос в том, на сколько корректен этот код? всегда ли будет нужное мне поведение?

extendedwidget.h

class ExtendedWidget : public QWidget
{
public:
    ExtendedWidget(QWidget *_parent = 0);
    virtual void updateLanguage();
    virtual void updateStyle();
protected:
    virtual void changeEvent(QEvent *event) override;
};

extendedwidget.cpp

ExtendedWidget::ExtendedWidget(QWidget *_parent):
    QWidget(_parent)
{
    QApplication::postEvent(this, new QEvent(QEvent::StyleChange));
}
void ExtendedWidget::updateLanguage()
{
}
void ExtendedWidget::updateStyle()
{
    qDebug() << Q_FUNC_INFO;
}

void ExtendedWidget::changeEvent(QEvent *event)
{
    switch(event->type())
    {
    case QEvent::LanguageChange:
        updateLanguage();
        break;
    case QEvent::StyleChange:
        updateStyle();
        break;
    default:
        break;
    }
    QWidget::changeEvent(event);
}
READ ALSO
GCC для MACOS (Macbook Air)

GCC для MACOS (Macbook Air)

Нужно не большое по весу решение, то есть Хсоde не подойдет, для компиляции С++ кода на MacЕсть какие-нибудь идеи?

408
Изменение размера вектора

Изменение размера вектора

Слышал, что если делать в вектор push_back, то если у него не хватает внутреннего буфера, то он увеличивается в 15 раза

384
Вылет при выполнения + Box2D

Вылет при выполнения + Box2D

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

253
Конвертирование WAV в MP3

Конвертирование WAV в MP3

Использую JavaScript-порт кодировщика LAME для конвертирования WAV-файла в MP3

412