• 5882阅读
  • 0回复

[提问]Qt4系统托盘图标的奇怪问题 [复制链接]

上一主题 下一主题
离线cycloneii
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-05
我创建了一个继承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还是我的代码有问题
快速回复
限100 字节
 
上一个 下一个