簡體   English   中英

在QT C ++中的QSystemTrayIcon附近顯示QWidget或QWindow

[英]Show QWidget or QWindow near QSystemTrayIcon in QT C++

我設法讓QSystemTrayIcon看起來像這樣:

假設VMWare圖標是我的QSystemTrayIcon

使用以下代碼行(信號槽工作):

#include "dialog.h"
#include "ui_dialog.h"
#include <QMessageBox>
#include <form.h>

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

    QIcon icon("/Users/JohnnyAppleseed/IMAGE.png");
    m_ptrTrayIcon = new QSystemTrayIcon(icon );
    m_ptrTrayIcon->setToolTip( tr( "Bubble Message" ) );
   // m_ptrTrayIcon->setContextMenu(m_trayIconMenu);
    connect(m_ptrTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
                 this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
}

Dialog::~Dialog()
{
    delete ui;
}

但是,當我嘗試實現代碼以顯示我創建的QSystemTrayIcon附近的QWidget / QWindow時,它無法顯示在它附近。 它也顯示並快速消失(即使我不希望它靠近QSystemTrayIcon)使用此代碼:

void Dialog::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
    form fr;
    fr.setWindowFlags(Qt::Popup);

    fr.show();
}

為了清楚起見,我想展示我的QWidget / QWindow就像VMWare Fusion的方法(或者在Microsoft Windows Vista或更高版本中找到的時鍾......

Mac OS X / Linux 沒有說明

微軟Windows 在此輸入圖像描述

有人可以指出我做錯了什么嗎? 謝謝!

為了使事情更簡單,請下載項目:http: //zipshare.net/sv

更新#1

關於QWidget / QWindow輕彈問題, vahancho建議我移動form fr; void Dialog::iconActivated(QSystemTrayIcon::ActivationReason reason)函數到工作窗口的標題。 它成功地完成了所有感謝vahancho 窗口現在顯示,但它還沒有接近QSystemTrayIcon :(

問題是你在堆棧中創建了表單對象,一旦執行超出你的iconActivated()插槽就會被刪除。 這就是為什么它一看到它就會消失的原因。 要解決此問題,您需要在堆中創建彈出窗口。

UPDATE

為了將對話框放在托盤圖標附近,您必須確定托盤圖標位置。 為此,您可以使用QSystemTrayIcon :: geometry()函數。 您的代碼看起來像(根據您的需要調整坐標):

QRect rect = m_ptrTrayIcon->geometry();
fr.move(rect.x(), rect.y());
fr.show();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM