gpt4 book ai didi

c++ - 信号与槽 Qt

转载 作者:太空宇宙 更新时间:2023-11-04 13:58:15 27 4
gpt4 key购买 nike

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

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

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

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

如有任何帮助,我们将不胜感激!

最佳答案

对 MainDialog::updateDate(QDate) 的 undefined reference

通常意味着编译器或链接器找不到对它的引用。因此,在您的 header 中,您 promise 它将存在。

然后,如果在稍后匹配时,从未找到引用......你会得到一个错误。

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

在你的 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!
{

}

然后在你解决了这个问题和其他编译错误之后,请注意应用程序输出,因为连接调用是运行时连接,所以它不会报告语法错误对齐,直到连接出现尝试过。

希望对您有所帮助。

关于c++ - 信号与槽 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20437505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com