我正在尝试编写一个非常简单的日历程序(我正在尝试学习Qt)。程序本身是非常基本的,它只是打开一个对话框,显示今天的日期,旁边有一个按钮。当按下按钮时,会打开另一个对话框,我将其称为日历选择器。
这是程序的要点:首先,主对话框打开当前日期。然后当按下图片中显示的按钮时,信号被发送到打开选择器的功能,并在两个类之间建立连接,我将在下面描述!打开选择器,您可以根据需要选择日期。假设您通过双击选择日期。然后将信号发送到关闭拾取器的功能,然后该功能向主对话框发出信号以将日期更新为新日期。现在问题出在这里:
主对话框和选择器都在不同的类中,我试图在双击项目时在两个类之间建立连接。
***编辑:好的,现在我的问题是我在头文件中声明了Picker * mypicker,当我尝试在.cpp文件中使用它时,例如mypicker-> show();它导致程序崩溃。谁知道为什么?
任何帮助都将不胜感激!!
答案 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!
{
}
然后在经过那个以及其他编译错误之后,请关注应用程序输出,因为连接调用是运行时连接,所以它不会报告语法错位,直到连接是尝试。
希望有所帮助。