我正在尝试将asignal从一个类的对象连接到另一个类的插槽,但它不起作用。
描述:我有一个带有主窗口的项目和许多子对话框窗口。 我有兴趣从子对话框窗口向主窗口发送一些消息。
因此我创建了一个名为sms_list的类。该类中的代码应将消息添加到多组中,并将信号发送到pmainwindow。 PmainWindow应该将信号捕获到插槽中。但是当我调试它时,我发现它从sms_list发出信号,但实际上它无法连接插槽。 sms_list.h
#include <QString>
#include <QObject>
#include <QWidget >
#include <set>
class SMS_list:public QObject
{
Q_OBJECT
class LessSMSTime
{
public:
/** Returns TRUE if the left time component is less than the right time
* component
*/
bool operator ()( const SMS& left, const SMS& right ) const;
};
typedef std::multiset<SMS, LessSMSTime> SMSSet
public:
SMS_list( PMainWindow* dialog_main )
void add( const SMS& sms ); //SMS is an object of another class called SMS
//some other functions
signals:
void display_msg_up();
private:
// some private functions
PMainWindow* dialog_main_;
SMSSet sms_;
};
sms_list.cpp
#include "Message_list.h"
Message_list::Message_list( PMainWindow* dialog_main )
: dialog_main_( dialog_main )
{
}
void SMS_list::add(const SMS& sms )
{
QMutex mutex;
mutex.lock();
// some more codes ..
sms_.insert( sms );// sms_ is a multi set
emit display_msg_up();//signal to connect to slot on main window
mutex.unlock();
}
PMainWindow.h
class PMainWindow : public QDialog, private Ui::PMainWindow
{
Q_OBJECT
public:
PMainWindow(QWidget *parent = 0);
// some more declarations
public slots:
// some more slots
void on_add_msg();// to add messages on QTable widget
private:
// some more variable dec
SMS_list* sms_list_;
}
PMainWindow.cpp
PMainWindow::PMainWindow(QWidget *parent)
: QDialog(parent),
// some other variable
sms_list_( 0 )
{
ui.setupUi( this );
init_cal_signals();
// some more function called
}
void PMainWindow::init_cal_signals()
{
sms_list_ = new SMS_list( this );
connect( sms_list_, SIGNAL( sms_list_->display_msg_up( ) ) , this , SLOT ( on_add_msg() ) );
}
void PMainWindow::on_add_msg()
{
qDebug() <<" Sadly code has not reached here .. " ;
}
欢迎提出任何建议/批评。 谢谢