Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Qt setGeometry: Unable to set geometry

Tags:

c++

qt

Why?

setGeometry: Unable to set geometry 22x22+320+145 on QWidgetWindow/'WidgetClassWindow'. Resulting geometry:  116x22+320+145 (frame: 8, 30, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 22x22, maximum size: 16777215x16777215).

The project is:

project.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled5
TEMPLATE = app


SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

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

private:
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"

#include <QVBoxLayout>

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{

    QVBoxLayout *vLayout = new QVBoxLayout(this);

}

Widget::~Widget()
{
}

main.cpp

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

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

    return a.exec();
}

Adding setGeometry(0, 0, 400, 300); in Widget constructor removes the issue. But the window will not be positioned beautifully at the center of the screen.

like image 361
KcFnMi Avatar asked Jul 05 '15 13:07

KcFnMi


2 Answers

This warning happens (at least to me) when the size of the widget results to be very small.

Set a minimum size for your widget (so it will be automatically positioned), like:

 // Widget constructor

 QVBoxLayout* vLayout = new QVBoxLayout();
 setLayout(vLayout);

 setMinimumSize(200,200);

You should also parent your widget to a QMainWindow, but will still work.

like image 191
Miki Avatar answered Nov 04 '22 15:11

Miki


Try to use: ajustSize()

Looks To be the problem: Why am I getting QWindowsWindow::setGeometry: Unable to set geometry warning with Qt 5.12.0

A possible solution: Qt Unable to set geometry

like image 1
Rui Santox Avatar answered Nov 04 '22 14:11

Rui Santox