[solved] Qt QRect geometry negative position (Windows)
-
bq. Solution:
I solved using the function QMainWindow::move()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
bq. 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_OBJECTpublic:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();private:
Ui::MainWindow *ui;
};#endif // MAINWINDOW_H@
@QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = untitled2
TEMPLATE = appSOURCES += main.cpp
mainwindow.cppHEADERS += mainwindow.h
FORMS += mainwindow.ui@
-
what do you actually want to achieve?!
to get the height at least from the title bar you can try the following:
@
QStyle * style = mainWindow->style();
QStyleOptionTitleBar so;
so.titleBarFlags = Qt::Window;
int titlebarHeight = style->pixelMetric(QStyle::PM_TitleBarHeight, &so, mainWindow);
@ -
@raven-worx thanks, but also has the borders of the window.
I solved using the function QMainWindow::move()
Thanks.