信号和插槽Qt

时间:2013-12-07 04:15:08

标签: c++ qt

我正在尝试编写一个非常简单的日历程序(我正在尝试学习Qt)。程序本身是非常基本的,它只是打开一个对话框,显示今天的日期,旁边有一个按钮。当按下按钮时,会打开另一个对话框,我将其称为日历选择器。

这是程序的要点:首先,主对话框打开当前日期。然后当按下图片中显示的按钮时,信号被发送到打开选择器的功能,并在两个类之间建立连接,我将在下面描述!打开选择器,您可以根据需要选择日期。假设您通过双击选择日期。然后将信号发送到关闭拾取器的功能,然后该功能向主对话框发出信号以将日期更新为新日期。现在问题出在这里:

主对话框和选择器都在不同的类中,我试图在双击项目时在两个类之间建立连接。

***编辑:好的,现在我的问题是我在头文件中声明了Picker * mypicker,当我尝试在.cpp文件中使用它时,例如mypicker-> show();它导致程序崩溃。谁知道为什么?

任何帮助都将不胜感激!!

1 个答案:

答案 0 :(得分:0)

undefined reference to MainDialog::updateDate(QDate)

通常意味着编译器或链接器无法找到对它的引用。所以在你的标题中,你承诺它会存在。

然后,如果在以后匹配的情况下从未找到引用...则会出现错误。

所以可能发生的事情是以下几点之一:

在maindialog.cpp文件中,您有:

// Either no definition of updateDate at all,  Wrong because you put in your header a declaration for one.

void updateDate(QDate date) // Wrong because it doesn't specify MainDialog
{

}


void MainDialog::updateDate() // Wrong because it doesn't match the parameter list
{

}

void MainDialog::updatedate(QDate date) // Wrong because the function name is off
{

}

QDate MainDialog::updateDate(QDate date) // Wrong because return type is off
{

}

void MainDialog::updateDate(QDate date) // Correct!  Matches the header file perfectly!
{

}

然后在经过那个以及其他编译错误之后,请关注应用程序输出,因为连接调用是运行时连接,所以它不会报告语法错位,直到连接是尝试。

希望有所帮助。