2009-06-27 50 views
3

我想在这里复制了Qt系统托盘例如: http://doc.qt.io/archives/4.6/desktop-systray.htmlQt的QSystemTrayIcon不发送激活信号

事情似乎只是QSystemTrayIcon对象不发送激活信号来工作。

这里是我的mainwindow.cpp代码:

#include <QtGui> 

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) 
    : QMainWindow(parent), ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    QMessageBox::information(0, tr("Systray"), 
           tr("Loaded.")); 
    createTrayIcon(); 

    connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this, 
      SLOT(iconActivated(QSystemTrayIcon::ActivationReason))); 

    trayIcon->show(); 
} 

void MainWindow::createTrayIcon() 
{ 
    trayIcon = new QSystemTrayIcon(this); 

} 

void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) 
{ 
    QMessageBox::information(0, tr("Systray"), 
           tr("Testing")); 

} 

void MainWindow::messageClicked() 
{ 
    QMessageBox::information(0, tr("Systray"), 
           tr("Sorry, I already gave what help I could.\n" 
           "Maybe you should try asking a human?")); 
} 

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

我使用Qt 4.5.2在Windows XP SP2。这可能是Windows XP的问题吗?或者我做错了什么?我没有为trayIcon设置QIcon。那是问题吗?

任何帮助,将不胜感激。

谢谢! Jieren

+0

从描述中不清楚,因此我必须问:原始(来自Qt)系统托盘图标示例是否工作? – 2009-06-28 23:27:09

+0

刚刚测试过。右键单击确实有效,但双击却奇怪地没有。但由于某些原因,SystemTray对象甚至没有发送激活的()信号。我甚至设置了一个QIcon。依然没有。 Grrrrrrr。 – Jieren 2009-06-29 12:45:36

回答

4

那么如果有人有兴趣,我发现这个问题。问题实际上在头文件中。

下面是工作的一个:

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QWidget> 
#include <QSystemTrayIcon> 


class MainWindow : public QWidget 
{ 
    Q_OBJECT 

public: 
    MainWindow(); 

private slots: 
    void iconActivated(QSystemTrayIcon::ActivationReason reason); 
private: 
    QAction *minimizeAction; 
    QAction *maximizeAction; 
    QAction *restoreAction; 
    QAction *quitAction; 

    QSystemTrayIcon *trayIcon; 
    void createActions(); 
    void createTrayIcon(); 

    void messageClicked(); 
}; 

#endif // MAINWINDOW_H 

iconActivated需要被声明为私人插槽。我把它宣布为私人功能。