QWidget move () и QGraphicsOpacityEffect, вызывающие черную рамку - PullRequest
0 голосов
/ 25 мая 2018

Это заняло у меня некоторое время, чтобы понять ... но всякий раз, когда я пытаюсь использовать функцию move () (или даже setGeometry) QWidget, которой назначен дочерний QWidgit с QGraphicsOpacityEffect, он заставляет QWidgit иметь черный цветГраница вдоль правой и нижней сторон.

Граница точно соответствует размеру пикселя, который я переместил.Если я увеличу количество перемещаемых виджетов, граница также увеличится ...

Если я удалю вызов move (), проблема будет исправлена ​​... Если я использую 0.99 вместо 1.0 в setOpacity () вызов, это решает проблему ...

Вот изображение проблемы ... https://i.imgur.com/LLI62Fu.png

Кто-нибудь знает, как избежать / исправить это...?

Вот мой код.

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>560</width>
    <height>351</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <widget class="QWidget" name="TestHolder2" native="true">
    <property name="geometry">
     <rect>
      <x>200</x>
      <y>90</y>
      <width>120</width>
      <height>80</height>
     </rect>
    </property>
   </widget>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);


    ui->TestHolder2->resize(450, 250);
    ui->TestHolder2->move(11, 11);
    ui->TestHolder2->setStyleSheet("background-color: black;");

    QWidget* new_widget = new QWidget(ui->TestHolder2);
    new_widget->setStyleSheet("background-color:red;");
    new_widget->resize(450, 250);

    QGraphicsOpacityEffect* opacity_effect = new QGraphicsOpacityEffect(new_widget);
    new_widget->setGraphicsEffect(opacity_effect);
    opacity_effect->setOpacity(1);

}

MainWindow::~MainWindow()
{
    delete ui;
}

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...