我创建了一个继承QMainWindow类的主窗口MainWindow,在主窗口的构造函数中创建了QSystemTrayIcon,并设置了显示系统托盘图标,重载了closeEvent,不关闭窗口,仅仅隐藏。然后在系统图标的弹出菜单中可以选择“回复”,回复菜单触发后会调用MainWindow的showMainShow槽函数,该槽函数调用QMainWindow的showNormal方法,结果隐藏的窗口显示出来了,可是位置不对,永远是在最左上角。我用qDebug() << geometry(),打印发现showNormal之后窗口的geometry并不是在左上角。关键代码如下:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
createToolBar();
createTrayIcon();
connect(ui->actionRestore, SIGNAL(triggered()), this, SLOT(showMainWindow()));
}
void MainWindow::showMainWindow()
{
qDebug() << this->geometry();
this->showNormal();
qDebug() << this->geometry();
}
void MainWindow::closeEvent(QCloseEvent *event)
{
mainWindowRect = this->geometry();
qDebug() << this->geometry();
this->hide();
qDebug() << this->geometry();
event->ignore();
}
四个打印geometry的地方值都完全一样,可是回复后的位置永远是在左上角,和关闭窗口前的位置不一样,请问这个是qt的bug还是我的代码有问题?