Debugging Qt-GUI应用程序的调试模式
我想为QtGUI应用程序添加一个调试模式。在调试模式下,任何GUI小部件事件都会转储调试信息,而不是执行原始功能。例如,单击Debugging Qt-GUI应用程序的调试模式,debugging,qt4,Debugging,Qt4,我想为QtGUI应用程序添加一个调试模式。在调试模式下,任何GUI小部件事件都会转储调试信息,而不是执行原始功能。例如,单击按钮A将打印出所选的复选框选项,其中按钮A的原始功能是对所选选项进行处理 我想添加一个菜单选项“debug mode”,或者一个秘密键盘快捷键来启用它。在与小部件信号相关联的回调函数中(单击/文本编辑),使用if(isDebugMode)/else来区分常规函数模式代码 这是测试GUI功能的好模型吗?有没有更好的方法?您可能希望使用信号/插槽系统进行调试。它让我想起了面向方
按钮A
将打印出所选的复选框选项,其中按钮A
的原始功能是对所选选项进行处理
我想添加一个菜单选项“debug mode
”,或者一个秘密键盘快捷键来启用它。在与小部件信号相关联的回调函数中(单击
/文本编辑
),使用if(isDebugMode)/else
来区分常规函数模式代码
这是测试GUI功能的好模型吗?有没有更好的方法?您可能希望使用信号/插槽系统进行调试。它让我想起了面向方面编程
QObject
派生的Debug
类,该类包含几个具有典型签名的插槽QObject::sender()
函数检索事件的发起人class Debug : public QObject
{
Q_OBJECT
...
// method for debugging focus
void focusChange(QWidget * old, QWidget * now);
};
void Debug::focusChange(QWidget *old, QWidget *now)
{
if (!old || !now)
return;
std::cerr << "Focus changed from " << old->objectName().toStdString()
<< " to " << now->objectName().toStdString() << std::endl;
}
QApplication app(argc, argv);
Debug dbg;
...
app.connect(&app, SIGNAL(focusChanged(QWidget*, QWidget*)),
&debug, SLOT(focusChange(QWidget*, QWidget*)));
// run Qt event loop
return app.exec();