这个问题我也郁闷了好久。
现在搞定了,给你看个例子。
其中mWindow.h 是我写的主窗口的头文件,继承于QMainWindow。
///main.cpp
#include <QApplication>
#include <QTextCodec>
#include <QDesktopWidget>
#include "mWindow.h"
int main(int argc, char* argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
//上面三行是为了解决中文乱码,需要QTextCodec
QApplication app(argc, argv);
mWindow example;
example.setGeometry(
(int)(QApplication::desktop()->width() - (QApplication::desktop()->width() -(QApplication::desktop()->width() / 2)) * 1.5) / 2,
(int)(QApplication::desktop()->height() - (QApplication::desktop()->height() -(QApplication::desktop()->height() / 2)) * 1.5) / 2,
(int)((QApplication::desktop()->width() - (QApplication::desktop()->width() / 2)) * 1.5),
(int)((QApplication::desktop()->height() - (QApplication::desktop()->height() / 2)) * 1.5));
///这些才是设置窗口位置的,需要QDesktopWidget
example.show();
return app.exec();
}
ps:setCentralWidget不是设置主窗口的,
而是用来设置主窗口内的中央部件的。