PDA

View Full Version : QtRect problem



brcontainer
27th April 2013, 23:52
Indeed the geometry is not negative,
the problem is to set the x and y the setGeometry is not considering the window border nor bar tute as working directly with the centralWidget instead of the whole window.
This causes the titleBar and go away from the left edge of the screen.

I believe it should be some thing missing is configured in the UI file


Note: I only tested it on windows7

Follow the simple example in QT:

mainwindow.cpp


#include "mainwindow.h"
#include "ui_mainwindow.h"

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

QRect test(0,0,300,240);
setGeometry(test);
}

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

mainwindow.ui


<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle" >
<string>MainWindow</string>
</property>
<widget class="QMenuBar" name="menuBar" />
<widget class="QToolBar" name="mainToolBar" />
<widget class="QWidget" name="centralWidget" />
<widget class="QStatusBar" name="statusBar" />
</widget>
<layoutDefault spacing="6" margin="11" />
<pixmapfunction></pixmapfunction>
<resources/>
<connections/>
</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();
}
——————-

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
——————-

untitled2.pro


QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled2
TEMPLATE = app


SOURCES += main.cpp\
mainwindow.cpp

HEADERS += mainwindow.h

FORMS += mainwindow.ui

d_stranz
28th April 2013, 18:28
Use resize( 300, 240 ) instead of setGeometry().

setGeometry( 0, 0, 300, 240 ) moves the upper left corner of the central widget to ( 0, 0 ) on the screen so of course your main window's title bar and left frame are off the screen.

brcontainer
1st May 2013, 20:21
thanks, but I was not talking about size and yes and coordinates (setGeometry works perfectly with Width and Height)
as I said in this passage:

the problem is to set the x and y the setGeometry is not considering the window border nor bar tute as working directly with the centralWidget instead of the whole window.

I managed to solve the problem of the coordinates.


QMainWindow::move(x,y);

Solved