LINUX.ORG.RU

QMetaObject::connectSlotsByName


0

0

В Qt 4.3 не всегда срабатывает автоматическое связывание сигнал/слот.
Вот описание главного окна:

>> MainWindow.h <<

#ifndef __MAINWINDOW_H__
#define __MAINWINDOW_H__
//
#include <QClipboard>
#include <QSystemTrayIcon>
//
#include "ui_MainWindow.h"
//
class MainWindow : public QMainWindow, public Ui::MainWindow
{
	Q_OBJECT

	public:
	
		QClipboard *clipBoard;
		QSystemTrayIcon *sysTray;
		
		MainWindow( QWidget * parent = 0, Qt::WFlags f = 0 );

	private slots:
	
		void on_clipBoard_activated(QSystemTrayIcon::ActivationReason reason);
};
#endif // __MAINWINDOW_H__

>> MainWindow.cpp <<

#include "MainWindow.h"
//
MainWindow::MainWindow( QWidget * parent, Qt::WFlags f) 
	: QMainWindow(parent, f)
{
	setWindowFlags(Qt::Popup);
	
	clipBoard = QApplication::clipboard();
	QSystemTrayIcon *sysTray = new QSystemTrayIcon(*(new QIcon("/usr/share/pixmaps/apple-green.png")), this);
	sysTray->show();
	
	setupUi(this);
}
//
void MainWindow::on_clipBoard_activated(QSystemTrayIcon::ActivationReason reason)
{
	
}
//

При запуске получаю вот что в консоли:

QMetaObject::connectSlotsByName: No matching signal for on_clipBoard_activated(QSystemTrayIcon::ActivationReason)

С QTimer и timeout() то же самое, приходится ручками связывать.
Никто не в курсе, в чем дело?

Sorry, сместо on_clipBoard_activated конечно же on_sysTray_activated.
Но оно все равно не работает =)

hex605
() автор топика

Попробуй после sysTray = new ... вставить sysTray->setObjectName("sysTray"). Можно вставить хоть "ABC", тогда надо писать on_ABC_activated...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.