【问题标题】:Trying to to close app when dialog window is closed by pressing X but getting error "no reject member function found" (Qt app)通过按 X 关闭对话框窗口时尝试关闭应用程序但出现错误“未找到拒绝成员函数”(Qt 应用程序)
【发布时间】:2017-05-12 02:09:17
【问题描述】:

在我的 Qt 程序中,我有一个主窗口和一个对话框窗口。主窗口有供用户选择的选项,从主窗口构造函数调用的对话窗口询问用户执行操作所需的密码。我想以这样的方式链接两个窗口,当用户试图通过按右上角的标准 X 按钮关闭对话框窗口时,整个程序将不仅关闭那个窗口。

我想我在这里 Qt: How do I handle the event of the user pressing the 'X' (close) button? 找到了我的问题的答案,我复制了被覆盖的拒绝函数的实现,只是将 MyDialog 更改为我的对话窗口的类名,但对我来说,我收到一个错误,说不成员函数“reject()”已在我的对话框窗口类中声明,即使它包含 QDialog #include 并且我的对话框窗口类在头文件中从它全部继承,该头文件当然包含在其 cpp 文件中。

我是否在 Qt 中遇到了一个时髦的错误?顺便说一句,我认为 Qt 开发人员从未在右上角的预定义插槽中制作这三个标准按钮是一种耻辱,因此可以使用 connect() 函数。

【问题讨论】:

    标签: qt dialog


    【解决方案1】:

    似乎您没有在 MyDialog 标头中添加 reject() 方法的声明。如果你想重新实现它,你应该在标题中声明:

    public slots:
        virtual void reject();
    

    【讨论】:

    • 做到了,谢谢。我不认为我必须这样做,因为它应该是 QDialog 中定义的函数。也许是我在一段时间内没有专门使用 C++,但对我来说很奇怪的是,当你从一个类继承时,你必须编写在“你的”头文件中重新定义的任何函数的声明。另外,如果您或其他人可以在我链接的代码中帮助我,应该确定变量“更改”的布尔值在哪里。我可以在拒绝函数中将其初始化为真,但我看不到它何时会改变? (没有双关语,哈哈)
    • @codehelp4,changes 变量不是强制性的,在该示例中,它可能是 MyDialog 成员,并在 MyDialog 的构造函数中初始化为 false。可能是它的含义 - 是否进行了需要保存的更改
    • @Valdimir 感谢您解释我不确定它是否应该是某个库预定义的东西。我总是倾向于认为除非我看到声明。
    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多