Qt:跨不同文件连接信号和插槽

时间:2013-06-07 05:51:48

标签: c++ signals-slots qt5

我是Qt和C ++编程的新手。我的程序中有一些问题,我需要一个解决方案。

我有两个文件MainWindow.h和ChatWindow.h,它包含两个MainWindow和ChatWindow类。

这是chatwindow.h

    namespace Ui {
class ChatWindow;
}

class ChatWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit ChatWindow(QWidget *parent=0);
    ~ChatWindow();

private slots:
    void send_chat_fn(pjsua_call_id call_id);
    void rcv_chat_fn(pjsua_call_id call_id);
    void rcv_msg_fn(QString msg);

    void on_pushButton_clicked();
    void on_actionQuit_triggered();

private:
    Ui::ChatWindow *ui;
};

这是mainwindow.h。

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void add_item(QString buddy_uri);

signals:
    void send_chat(pjsua_call_id call_id);
    void rcv_chat(pjsua_call_id call_id);
    void rcv_msg(QString msg);

private slots:
    void on_actionAdd_Buddy_triggered();
    void on_actionQuit_triggered();
    void on_actionStatus_triggered();
    void on_actionNew_Chat_triggered();
    void on_action_Configuration_triggered();


    void on_listWidget_doubleClicked(const QModelIndex &index);

private:
    Ui::MainWindow *ui;
};

现在我想将来自mainwindow.h的信号连接到chatwindow.h中的插槽。

我在类ChatWindow的构造函数中尝试过连接,但是它不起作用(我认为这是因为连接在不在类上的实例上工作)。我想要连接的MainWindow类的实例是在mainwindow.cpp中。在MainWindow中定义类ChatWindow的实例会出错:

  

无法设置父级,父级位于不同的线程

如果我在ChatWindow的Constructor中创建一个新实例,那么它就不会连接到所需的实例。

一团糟。请帮我解决这个问题。

0 个答案:

没有答案