2015-07-05 6 views
8

Dlaczego?Zestaw QtGeometry: Nie można ustawić geometrii

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

Projekt:

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

Dodawanie setGeometry (0, 0, 400, 300); w Konstruktorze Widget usuwa problem. Ale okno nie będzie pięknie umieszczone na środku ekranu.

+0

Czy chcesz, aby okno aplikacji znajdowało się pośrodku ekranu? –

Odpowiedz

10

To ostrzeżenie pojawia się (przynajmniej dla mnie), gdy rozmiar widgetu jest bardzo mały.

ustawić minimalny rozmiar dla widget (tak zostanie on automatycznie ustawiony), takich jak:

// Widget constructor 

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

setMinimumSize(200,200); 

należy również dominującą widget do QMainWindow, ale będzie nadal działać.

+0

bardzo dziękuję. Brakowało mi ustawienia rodzica dla widżetu ComboBox, a rozwiązanie pomogło ... – sundar