我設法讓QSystemTrayIcon可見與此類似:使用下面的代碼行(一起工作的信號插槽)顯示了QWidget或QWindow QSystemTrayIcon附近的QT C++
:
#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;
}
但是,當我嘗試實現代碼以顯示QWidget/QWindow接近我創建的QSystemTrayIcon時,它無法在其附近顯示。它還顯示了與使用此代碼會迅速消失,以及(即使我不希望它的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的
的Microsoft Windows
有人可以指出我做錯了什麼?謝謝!
爲了讓事情變得更簡單,下載項目:http://zipshare.net/sv
更新#1
關於QWidget的/ QWindow輕彈問題,vahancho勸我到form fr;
從void Dialog::iconActivated(QSystemTrayIcon::ActivationReason reason)
功能移動工作窗口的標題。它成功地工作,全部感謝vahancho。該窗口現在顯示,但它不在QSystemTrayIcon附近:(
感謝您指出QDialog不斷消失的原因!我設法通過從HEADER文件中聲明「fr」來解決它,而不是在iconActivated()中聲明它。但主要問題是,我似乎無法找到任何解決方案保持QDialog接近QSystemTrayIcon ... – user3188609
請看我更新的答案。 – vahancho
工程就像一個魅力!謝謝vahancho:D – user3188609