Qt setGeometry:无法设置几何体

时间:2015-07-05 13:41:32

标签: c++ qt

为什么?

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).

该项目是:

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();
}

添加setGeometry(0,0,400,300);在Widget构造函数中删除该问题。但是窗口不会精美地定位在屏幕的中央。

2 个答案:

答案 0 :(得分:15)

当小部件的大小非常小时,会发生此警告(至少对我而言)。

为小部件设置最小尺寸(因此它将自动定位),例如:

 // Widget constructor

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

 setMinimumSize(200,200);

您还应将您的小部件设为QMainWindow,但仍可使用。

答案 1 :(得分:0)

尝试使用:ajustSize()

看起来是个问题: Why am I getting QWindowsWindow::setGeometry: Unable to set geometry warning with Qt 5.12.0

可能的解决方案: Qt Unable to set geometry