Итак, я работаю с некоторыми QWidgets внутри QMdiArea, и я хочу поиграть с непрозрачностью графического представления внутри QWidgets с помощью циферблата, используя QGraphicsOpacityEffect.
Это слот, который получает сигнал набора для установки новой непрозрачности:
void MainWindow::changeWindow1Transparency(int dialValue)
{
QGraphicsOpacityEffect* op = new QGraphicsOpacityEffect(ui->graphicsView); //Potential memory leak here
op->setOpacity(qreal(dialValue)/255);
ui->graphicsView->setGraphicsEffect(op);
ui->graphicsView->repaint();
}
Это единственный способ, которым мне удалось изменить непрозрачность сразу после поворота регулятора. Но я боюсь, что это может вызвать утечку памяти из-за новых, постоянно создающих новые эффекты.
Я попытался установить это QGraphicOpacityEffect *op
как атрибут класса. Но затем, когда я поворачиваю диск, непрозрачность меняется не сразу, а только когда я перемещаю окно вокруг QMdiArea. То же самое происходит при вызове QGraphicsView->GraphicsEffects()
. Есть идеи, почему это происходит? Как я могу предотвратить утечку памяти и в то же время заставить непрозрачность немедленно изменить с помощью циферблата?
Спасибо!