在Qt中实现退出按钮
Implementing Exit button in Qt
我正在尝试实现退出按钮,但我无法使用connect()
方法来执行此操作。实际上据我所知,我的按钮没有发出任何信号,但我找不到问题所在。这是我使用connect()
方法的代码的一部分:
#include "MyMainWindow.h"
MyMainWindow::MyMainWindow(QWidget * parent, Qt::WindowFlags flag) :
QMainWindow(parent, flag)
{
this->setFixedSize(1120, 630);
menu = new MyMenu(this);
this->setCentralWidget(menu);
this->show();
// the connect implementation
connect(menu->exit, SIGNAL(clicked()), this, SLOT(this->exit_button_clicked()));
}
MyMainWindow::~MyMainWindow()
{
}
void MyMainWindow::exit_button_clicked()
{
this->close();
}
MyMainWindow
是MyMenu
的朋友班,exit
是私人QPushButton
。现在我需要一些帮助来解决这个问题。
您可以直接使用如下
connect(menu->exit, SIGNAL(clicked()), this, SLOT(close()));
无需创建新方法exit_button_clicked()
SLOT
SLOT
是一个实际接受字符串而不是 C++ 有效表达式的宏。
SLOT(this->exit_button_clicked())
不会链接到正确的插槽。您需要改为编写SLOT(exit_button_clicked())
。Qt Creator的自动完成功能可以为所选对象建议有效的插槽。
重新注释的替代方法是使用新语法。如果您的编译器支持 C++11,您可以在 Qt 5 中使用它。这种语法的优点是对信号、时隙及其参数进行编译时检查。
如果menu->exit
是私有的,则无法从其他类访问它,除非将其声明为friend class
。您可能需要MyMenu
类中创建公共getter。
即使有一个不使用lambda的解决方案,对于简单的操作,lambdas也很好用:
connect(menu->exit, &QPushButton::clicked(), [&this]{ exit_button_clicked(); });
当执行某些操作的实际语法非常接近您对它的期望时,这非常好:)
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 如何让LLDB在成功时退出,在失败时等待
- C++控制台应用程序阻止退出
- 程序在执行程序的其余部分之前退出
- 构造函数在退出函数时无法初始化一个参数
- 为什么异常不退出程序?
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 退出简单while循环时出现问题
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 无法创建退出按钮
- 在Qt中实现退出按钮