对话框和MainWindow之间的Qt信号和插槽

时间:2016-02-14 23:56:29

标签: c++ qt

许多关于Qt中信号和插槽的教程都在两个对话框之间进行双向数据交换。

在我的下面的例子中,我没有尝试交换任何数据,我试图在对话窗口的关闭(接受)上调用mainWindow类的updateComboBox方法。

如何调用MainWindow :: updateComboBox函数?

我是否需要在打开对话框的函数中使用插槽连接代码?

我正在使用Qt 5.1。

我对信号和插槽的尝试:

addGroup.h

signals:
        void updateCombo();

addGroup.cpp

void addGroup::on_buttonBox_accepted()
{
    ...
    qry...
    if (qry.exec())
    {
        //connect(addGroup, SIGNAL(finished(int)), this, SLOT(updateCombo()));
        //connect(this, SIGNAL(finished(int)), this, SLOT(updateCombo()));
        emit updateCombo();
    }

}

MainWindow.h

public slots:
    void updateComboBox();

MainWindow.cpp

void MainWindow::updateComboBox()
{
    ...
    qry...
}

解决方案:

QObject:connect(addGroup,SIGNAL(updateCb()), this, SLOT(updateComboBox()));

回答。我也忘记了1个尾随括号。

1 个答案:

答案 0 :(得分:1)

您应该在插槽区域中添加updateComboBox方法,并按以下顺序键入(在您创建的功能中并显示对话框窗口):

addGroup ag;
QObject::connect(&ag,SIGNAL(updateCombo()),this,SLOT(updateComboBox()));