Solved Custom widget set as centralWidget dissapears upon "setStyleSheet"
-
I use a custom widget to display backgrounds. Currently I am just trying to keep the widget displayed.
Homescreen is currently really basic, it takes the input of the mainwindow and resizes to fit the entirely of the window.
MainWindow::MainWindow(QWidget *parent, QDesktopWidget *dw): QMainWindow(parent), ui(new Ui::MainWindow) { // prep work setFixedSize(dw->width(), dw->height()); ui->setupUi(this); Homescreen *homescreen = new Homescreen(this); qApp->setStyleSheet( "Homescreen { " "background-image: url(\"/User/craigoconnor/Downloads/backgroundTest2.jpg\") 0 0 0 0 stretch stretch;" "background-color: blue;" "}"); homescreen->setAutoFillBackground(true); setCentralWidget(homescreen); }
It will recognize the background color, ignoring the background image, and if i ever try to change the style in any way (from inside the homescreen object or other) then the object just stops displaying. If i DONT call "homescreen->setAutoFillBackground(true);" nothing will ever get displayed....
Any advice on how to edit a widget properly upon instantiation?
-
Oof.. two days I've been trying to figure this one out, turns out it's really simple and I just happened to find the solution after I finally bothered to post a question..
https://forum.qt.io/topic/69022/set-background-image-does-not-work/6
@raven-worx showed that with a custom widget, it needs a paint event to handle backgrounds:void CustomWidget::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); }
New to this forum - how to mark as solved?
-
Hi and welcome to devnet,
The "Topic Tools" button is what you are looking for :)